gpt4 book ai didi

java - BigDecimal 乘以 100 哪种方法更好?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:40 39 4
gpt4 key购买 nike

这里我有一个使用 Java BigDecimal 的问题。当我想为 BigDecimal 的对象乘以 100 时,哪种方式会更好。

  1. 将 10 乘以两次;
  2. 向右移动点(2);
  3. scaleByPowerOfTen(2);
  4. 还有其他方法吗?如果有,请告诉我。

顺便说一句,它将用于商业计算,所以我考虑的是精度而不是速度。

最佳答案

选项 3 是最快的。选项 1 和 2 大致相同(选项一是乘以十两次)。乘以 100 的速度接近选项 3 的速度。

这是我的测试代码:

import java.math.BigDecimal;

public class TestingStuff {

public static void main(String[] args){
BigDecimal d2 = new BigDecimal(0); // to load the big decimal class outside the loop
long start = System.currentTimeMillis();
for(int i = 0; i < 1000000; i++) {
BigDecimal d = new BigDecimal(99);
d2 = d.movePointRight(2);
}
long end = System.currentTimeMillis();
System.out.println("movePointRight: " + (end - start));

BigDecimal ten = new BigDecimal(10);
start = System.currentTimeMillis();
for(int i = 0; i < 1000000; i++) {
BigDecimal d = new BigDecimal(99);
d2 = d.multiply(ten).multiply(ten);
}
end = System.currentTimeMillis();
System.out.println("multiply: " + (end - start));

start = System.currentTimeMillis();
for(int i = 0; i < 1000000; i++) {
BigDecimal d = new BigDecimal(99);
d2 = d.scaleByPowerOfTen(2);
}
end = System.currentTimeMillis();
System.out.println("scaleByPowerOfTen: " + (end - start));
}

}

当然,您可以在自己的代码中自己尝试各种选项。如果您无法衡量差异,那您为什么要优化?

关于java - BigDecimal 乘以 100 哪种方法更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21298457/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com