javascript - 在javascript中将整数转换为数字的小数部分最有效的方法是什么?

标签 javascript node.js integer decimal mantissa

我想使用 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/

相关文章:

javascript - 关于如何与 Mongoose 创建关系的简单说明

javascript - socket.io 可以处理的最大房间数是多少?

java - 如何将两个字节 append 到一个 int

c++ - 乘以负值的正整数

javascript - 如何在多个php页面中保留js变量值

javascript - 鼠标滚轮事件未触发

javascript - 如何在 jQuery 中捕获 AJAX 中止?

javascript - Javascript Canvas 库的现状?

node.js - 实现express js时,Electron JS出现错误

java - 更新 SQLite 数据库中的整数值 (java)