javascript - 如何测试是否有多个小数点?

标签 javascript numeric

我正在为一个应该返回 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'//同样的错误

我想我可以将它用引号括起来并将其作为字符串进行测试(当谓词是字符串时,上面的所有测试都按预期工作)。

尚未回答此问题的各种问题:

那么,实际问题:如何测试具有多个小数点的“数字”并拒绝它?

这是我的实际代码,其中大多数测试都成功运行:

/**
* 
* @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/

相关文章:

javascript - ASP.net MVC 的 Kendo UI 网格

javascript - Html Doctype 标签影响 javascript?

javascript - 如何在 javascript 中返回延迟方法的值

python - 快速有效地计算已知特征值的特征向量

c# - 确定 DataColumn 是否为数字

javascript - 从与图表无关的事件中获取当前选择的rangeSelector

javascript - 使用javascript检查多个字符串是否相互包含

ruby - 缺少数字类和方法

algorithm - 是否有任何数值稳定的多边形质心查找算法版本?

testing - Appium 无法使用数字键盘