性能:toFixed()与Math.floor(x * 10000)

时间:2016-04-10 12:07:24

标签: javascript

我需要将两个浮点值与一定精度(即小数点后4位)进行比较:

var float1 = 0.0025132741228718345;
var float2 = 0.0025132812393818293;

我看到两个选项:

Math.floor(float1 * 10000) === Math.floor(float2 * 10000); // 25 === 25

...或:

float1.toFixed(4) === float2.toFixed(4) // "0.0025" === "0.0025"

由于操作将每秒发生60次,我问自己:

  1. 哪个选项具有更高的性能?
  2. 是更广泛接受的选项之一吗?
  3. 还有第三种选择吗?

2 个答案:

答案 0 :(得分:0)

Math.round(142.89 * 100) / 100 // 142.89
Math.floor(142.89 * 100) / 100 // 142.88

似乎是基于round函数的toFixed,所以最好改用它

答案 1 :(得分:0)

快速版本:

function FastFloor(f1, f2) {
  return ~~(f1 * 10000) === ~~(f2 * 10000);
}

基准测试: enter link description here