Java 如何在不使用toString()的情况下将任何类型的数字转换为BigDecimal?

Java 如何在不使用toString()的情况下将任何类型的数字转换为BigDecimal?,java,bigdecimal,Java,Bigdecimal,我现在使用这个方法,对任何类型的数字执行加法: public <T extends Number> CustomNumber add(T a, T b) { BigDecimal numberA = new BigDecimal(b.toString()); BigDecimal numberB = new BigDecimal(a.toString()); return new CustomNumber<>(numberA.add(numberB

我现在使用这个方法,对任何类型的
数字执行加法:

public <T extends Number> CustomNumber add(T a, T b) {
    BigDecimal numberA = new BigDecimal(b.toString());
    BigDecimal numberB = new BigDecimal(a.toString());
    return new CustomNumber<>(numberA.add(numberB));
}
公共客户号添加(TA、TB){
BigDecimal numberA=新的BigDecimal(b.toString());
BigDecimal numberB=新的BigDecimal(a.toString());
返回新的CustomNumber(numberA.add(numberB));
}

我使用BigDecimal,因为据我所知,这是执行精确计算的最佳解决方案。如果没有
toString()
方法,如何更改此方法以获得相同的结果
CustomNumber
是我用来存储数值的类。

我不会冒险,特别是如果你想从浮点类型构造一个
BigDecimal


在大多数情况下,从
字符串
构造是最安全的方法。始终对依赖于区域设置的十进制分隔符要格外小心。

使用
toString()
有什么问题吗?不应该使用
valueOf()
静态方法。Java真的,真的不会让你试图泛化像这样的
Number
类型。放弃并选择一个
Number
类型在整个程序中使用。