android java添加/次小数结果
我试图添加浮点数,但效果不好android java添加/次小数结果,java,android,Java,Android,我试图添加浮点数,但效果不好 Result: 0.2 0.4 0.6 0.8 1.0 1.2 1.4000001 我的代码: static public void add_order(Product d) { Float tt = Float.parseFloat(text_price.getText().toString()); tt += Float.parseFloat(d.getPrice()); te
Result:
0.2
0.4
0.6
0.8
1.0
1.2
1.4000001
我的代码:
static public void add_order(Product d)
{
Float tt = Float.parseFloat(text_price.getText().toString());
tt += Float.parseFloat(d.getPrice());
text_price.setText(tt + "");
}
有什么想法吗?对我来说似乎不太好,
float
不是为精确的结果而设计的;不要在这种情况下使用它。使用一个int
或long
,例如乘以100,则有两个实际工作的数字
根据代码示例中的术语,我假设您正在进行一些货币工作;如果您对不同的精度有要求,请阅读
BigDecimal
一些阅读:一般来说,在处理金钱或任何其他值时,如果您不能让计算机出错,请不要使用float或double。我可以举一个将字符串数字转换为BigDecimal的示例吗?另外,我可以用一个例子将字符串数字转换成BigDecimal吗?请使用带有字符串参数的构造函数,比如新的BigDecimal(“12.34”)
float/double和BigDecimal之间的区别在于是否特别支持小数。Float和double是基于二进制分数的,以实现紧凑性和高效的硬件支持。BigDecimal基于小数,如果可以表示为短小数的数字特别重要,则它是正确的类型。