[英]Check the number of digits after the decimal part
我需要根據小數部分后的位數驗證一個數字。
我正在成功使用以下代碼,但我想知道:
注意:我知道正則表達式,但我正在尋找一種數學方法。
var max = 2; // max number of digits after decimal places var value = 10.154; var s = value.toString().split('.') if (s[1].length > max) { alert('invalid'); } else { alert('ok'); }
我相信這是最好的方法,因為沒有內置的 Javascript 函數可以實現你想要的。 除了在歐洲大陸使用逗號(,)分隔符而不是句點(。)
你也可以這樣做,但它不適用於負數
var value = 10.154;
value = Math.abs(value);
var decimal = value - Math.floor(value)
var length = decimal.toString().length;
你可以使用 Python 的round()
函數:
>>> num = 10.542
>>> round(num, 2) == num
False
>>> num = 12.32
>>> round(num, 2) == num
True
或者
>>> num = 12.32
>>> round(num, 2) >= num
True
>>> num = 12.3
>>> round(num, 2) >= num
True
>>> num = 12.324
>>> round(num, 2) >= num
False
你可以這樣做:
var value = 10.154;
var length = value.toString().length - (value.toString().indexOf('.') + 1)
在確定數字位數時,需要將數字作為字符串來處理。 因此,您需要執行與您正在執行的操作類似的操作。 或者只是使用.toFixed()
擺脫多余的數字。
在計算機中,數字有一個完整的浮點小數。 所以 10.154 實際上是 10.15400000000(無論語言的准確度如何)。
因此,如果您想檢查它是否具有 > 最大十進制值,那么您可以:將整個值與 10^x 相乘,然后對它進行模數 1。 如果它不是 0,那么您的十進制值比您設置的最大值多。
因此,根據您的示例 10.154(3 個小數點)* 10^2(您的最大值)= 1015.4 1015.4 % 1 = 0.4 所以“無效”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.