如何测试多个小数点?

时间:2018-06-25 18:22:39

标签: javascript numeric

我正在为应该返回浮点数的函数编写单元测试。我试图阻止某人向该函数发送一组字符(注意,我没有说字符串),例如3.2.1。如果我对这个“数字”使用常规测试,它们似乎都将失败,并显示以下信息:

Uncaught SyntaxError: missing ) after argument list

EG:

  • var result = isNaN(3.2.1); //相同的错误
  • var result = parseFloat(3.2.1); //预计会出现NaN,但会收到错误消息
  • var result = typeof 3.2.1 === 'number' //相同的错误

我想我可以将其包装在引号中并作为字符串进行测试(当谓词为字符串时,以上所有测试均按预期进行)。

未能回答这一问题的各种SO问题:

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

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

/**
* 
* @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);
}
};

1 个答案:

答案 0 :(得分:2)

假设您擅长检查字符串,然后可以将其拆分为数组并检查长度。

var badNumber = '3.2.1';
if (badNumber.split('.').length > 2) {
    console.error('uh oh. THAT\'s not a number!');
} else {
    // proceed
}