我正在尝试将字符串转换为BigDecimal。请告诉我下面哪个是好办法。
BigDecimal selAmount = BigDecimal.ZERO;
String amount = "1234";
selAmount = BigDecimal.valueOf(Double.parseDouble(amount));或
selAmount = new BigDecimal(amount);发布于 2015-11-09 10:42:54
不要使用第一种方法。如果字符串表示的值不能精确地由double表示,则会出现准确性问题。
您也不能使用第二种方法,因为不存在接受字符串的BigDecimal.valueOf重载。
因此,备选案文3:
BigDecimal selAmount = new BigDecimal(amount);发布于 2015-11-09 10:42:29
您可以直接将字符串传递给BigDecimal的构造函数。
发布于 2015-11-09 10:43:29
BigDecimal.valueOf(double));隐式地调用return new BigDecimal(Double.toString(val));。所以,你的第二个案例会更有效率,就像Thilo说的,更正确。
代码:
*/
public static BigDecimal valueOf(double val) {
// Reminder: a zero double returns '0.0', so we cannot fastpath
// to use the constant ZERO. This might be important enough to
// justify a factory approach, a cache, or a few private
// constants, later.
return new BigDecimal(Double.toString(val));
}https://stackoverflow.com/questions/33607324
复制相似问题