我想使用 JavaScript 将整数转换为数字的小数部分。
例如:
10030 -> 0.10030
123 -> 0.123
我想出了两种方法:
var convertIntegerPartToFractionalPart1 = function(integerPart) {
var fractionalPart = integerPart;
while(fractionalPart > 1) {
fractionalPart = fractionalPart / 10;
}
return fractionalPart;
};
var convertIntegerPartToFractionalPart2 = function(integerPart) {
return parseFloat('.' + integerPart);
};
convertIntegerPartToFractionalPart1 不会产生 100% 准确的结果,例如 132232 转换为 0.13223200000000002。然而,在我的 MacBook Pro 上,在 node.js 下,convertIntegerPartToFractionalPart1 的速度是 ConvertIntegerPartToFractionalPart2 的两倍多。 (convertIntegerPartToFractionalPart1 运行 1000000 次花费了 46ms,convertIntegerPartToFractionalPart2 运行 1000000 次花费了 96ms)
有更好的方法吗?
最佳答案
我一开始不想回答,因为 Pointys 的解决方案看起来更优雅。
但是在做了Jsperf之后事实证明,我在 Chrome 上的数学解决方案慢了大约 70%。
function cnvrt3 (n) {
return n / Math.pow(10,(""+n).length)
}
cnvrt3(132232)//0.132232
所以这也是使用类型转换来确定十的幂
由于floating point而引起的注意精度 0.132232 并不是真正的 0.132232
。虽然很可能是您正在寻找的值(value)
关于javascript - 在javascript中将整数转换为数字的小数部分最有效的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16735955/