簡體   English   中英

檢查小數部分后的位數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM