[英]How to test for multiple decimal points?
我正在為應該返回浮點數的函數編寫單元測試。 我試圖阻止某人向該函數發送一組字符(注意,我沒有說字符串),例如3.2.1
。 如果我對這個“數字”使用常規測試,它們似乎都將失敗並顯示以下內容:
Uncaught SyntaxError: missing ) after argument list
。
例如:
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);
}
};
假設您擅長檢查字符串,則可以將其拆分為數組並檢查長度。
var badNumber = '3.2.1';
if (badNumber.split('.').length > 2) {
console.error('uh oh. THAT\'s not a number!');
} else {
// proceed
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.