Java 带十进制转换的 BigDecimal long
Java BigDecimal long with decimal conversion
我的 BigDecimal
值为 123.45
。我想将其转换为 12345
的 long
值,我想知道这样做的最佳方法是什么。
我宁愿避免做类似的事情
val.multiply(new BigDecimal(100)).toBigInteger()
用于BigDecimal字符串和字符串替换“.”并做一个 Long.valueOf
只是张贴这个以防你想知道。进行了性能测试,正如预期的那样,字符串替换性能最差。
结果:
movePointRight:1230
相乘:833
scaleByPowerOfTen:591
字符串替换:3289
BigDecimal val = new BigDecimal(0);
long start = System.currentTimeMillis();
for(int i = 0; i < 1000000; i++) {
BigDecimal d = new BigDecimal(123.45);
val = 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(123.45);
val = d.multiply(new BigDecimal(100));
}
end = System.currentTimeMillis();
System.out.println("multiply: " + (end - start));
start = System.currentTimeMillis();
for(int i = 0; i < 1000000; i++) {
BigDecimal d = new BigDecimal(123.45);
val = d.scaleByPowerOfTen(2);
}
start = System.currentTimeMillis();
for(int i = 0; i < 1000000; i++) {
BigDecimal d = new BigDecimal(123.45);
val = d.scaleByPowerOfTen(2);
}
end = System.currentTimeMillis();
System.out.println("scaleByPowerOfTen: " + (end - start));
start = System.currentTimeMillis();
for(int i = 0; i < 1000000; i++) {
BigDecimal d = new BigDecimal(123.45);
val = new BigDecimal(d.toString().replace(".", ""));
}
end = System.currentTimeMillis();
System.out.println("String replacement: " + (end - start));
我的 BigDecimal
值为 123.45
。我想将其转换为 12345
的 long
值,我想知道这样做的最佳方法是什么。
我宁愿避免做类似的事情
val.multiply(new BigDecimal(100)).toBigInteger()
用于BigDecimal字符串和字符串替换“.”并做一个 Long.valueOf
只是张贴这个以防你想知道。进行了性能测试,正如预期的那样,字符串替换性能最差。
结果: movePointRight:1230 相乘:833 scaleByPowerOfTen:591 字符串替换:3289
BigDecimal val = new BigDecimal(0);
long start = System.currentTimeMillis();
for(int i = 0; i < 1000000; i++) {
BigDecimal d = new BigDecimal(123.45);
val = 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(123.45);
val = d.multiply(new BigDecimal(100));
}
end = System.currentTimeMillis();
System.out.println("multiply: " + (end - start));
start = System.currentTimeMillis();
for(int i = 0; i < 1000000; i++) {
BigDecimal d = new BigDecimal(123.45);
val = d.scaleByPowerOfTen(2);
}
start = System.currentTimeMillis();
for(int i = 0; i < 1000000; i++) {
BigDecimal d = new BigDecimal(123.45);
val = d.scaleByPowerOfTen(2);
}
end = System.currentTimeMillis();
System.out.println("scaleByPowerOfTen: " + (end - start));
start = System.currentTimeMillis();
for(int i = 0; i < 1000000; i++) {
BigDecimal d = new BigDecimal(123.45);
val = new BigDecimal(d.toString().replace(".", ""));
}
end = System.currentTimeMillis();
System.out.println("String replacement: " + (end - start));