我有一个简单的函数可以计算小数位数,
例如。 _d(0.01) = 2
,_d(0.001) = 3
等。
我们向系统中添加了数量为0.00000001且功能中断的新硬币。
原因如下:0.00000001.toString() = 1e-8
,所以我无法按'.'
对其进行拆分,并且无法像以前一样计算第二部分的长度。
所以问题是-如何从'0.00000001'
号中获取字符串0.00000001
是最简单的方法。
编辑
我的意思不是'0.00000001'
,我的意思是任何没有小数的小数到小数。一些可以工作的_d(x)
函数_d(0.000000000012) = '0.000000000012'
等等。 toString()
通常对大(但不是太大)的数字起作用。
最佳答案
您是否需要像
function decimalPlaces(num) {
var match = (''+num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
if (!match) { return 0; }
return Math.max(
0,
// Number of digits right of decimal point.
(match[1] ? match[1].length : 0)
// Adjust for scientific notation.
- (match[2] ? +match[2] : 0));
}
console.log(decimalPlaces(0.000000001))
这样的东西