【发布时间】:2016-10-14 01:18:37
【问题描述】:
例如,当我有 3.333 并且执行该代码时,我需要数字为 3.33。
这是我应该做的代码,但没有:
String number = Double.toString(first);
number = number.substring(0, string.length() - 1);
first = Double.parseDouble(number);
我尝试通过将数字转换为字符串、切断最后一个字符并再次将其保存为双精度来做到这一点。但它不起作用。它不是切断 1 位,而是切断 2,例如上面它将返回 3.3。
这种方法可靠吗?如果可以,我能做些什么来解决它?
此外,这种方法是否有可能使程序崩溃(只有十进制数字通过该代码)并且会损失精度?
【问题讨论】:
-
我建议使用 BigDecimal 而不是 double
-
为什么?我认为没有理由
-
String 有一个格式化程序,可以将字符串格式化为您想要的精度。您必须将其打印在字符串中才能获得所需的精度。但不要转换为字符串,然后再转换为双精度。这是API for String.Format
-
@Frecklefoot 我现在会调查它。而且我想没有办法通过这种方式使程序崩溃?
标签: java