我正在为一个应该返回 float 的函数编写单元测试。我试图阻止某人向该函数发送一组字符(注意我没有说字符串),例如 3.2.1
。如果我对这个“数字”使用正常测试,它们似乎都会失败:
未捕获的语法错误:参数列表后缺少 )
。
EG:
var result = isNaN(3.2.1);
//同样的错误var result = parseFloat(3.2.1);
//期望为 NaN,但收到错误var result = typeof 3.2.1 === 'number'
//同样的错误
我想我可以将它用引号括起来并将其作为字符串进行测试(当谓词是字符串时,上面的所有测试都按预期工作)。
尚未回答此问题的各种问题:
How to check whether a value is a number in JavaScript or jQuery
Is there any function like IsNumeric in JavaScript to validate numbers?
那么,实际问题:如何测试具有多个小数点的“数字”并拒绝它?
这是我的实际代码,其中大多数测试都成功运行:
/**
*
* @param {*} value
* Converts a numeric string value to a float for use by a timeout interval
* datatype: ParseTimeoutInterval(string)
* example: ParseTimeoutInterval('2.5')
* return type: float
* return example: 2.5
*/
SerialWidget.prototype.ParseTimeoutInterval = function (value) {
try {
var self = this;
self.CallListeners('debug', 'ParseTimeoutInterval: value = ' + value);
if (value) {
var result = parseFloat(value);
if(result < 0 || isNaN(result)){
self.CallListeners('debug', 'ParseTimeoutInterval: value is negative or NaN');
return null;
}
return result.toPrecision(2);
} else {
return null;
}
self.CallListeners('debug', 'ParseTimeoutInterval: value is not a number');
return null;
} catch (ex) {
self.OnError('ParseTimeoutInterval', ex.message);
}
};
最佳答案
假设您擅长检查字符串,则可以将其拆分为数组并检查长度。
var badNumber = '3.2.1';
if (badNumber.split('.').length > 2) {
console.error('uh oh. THAT\'s not a number!');
} else {
// proceed
}
关于javascript - 如何测试是否有多个小数点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51029732/