我的购物车了几个商品假如价钱为56.39 , 520.09 , 123.08 三个数。但得出来的结果是699.5600000000001
请问这个要怎么解决
java 小数相加问题
答案:5 悬赏:60 手机版
解决时间 2021-02-14 21:25
- 提问者网友:不爱我么
- 2021-02-14 11:42
最佳答案
- 五星知识达人网友:走死在岁月里
- 2021-02-14 12:53
格式化数据,限制小数位
全部回答
- 1楼网友:白昼之月
- 2021-02-14 16:54
float的有效精度只有7位,超过了就改为double,不然无法精确运算。
double java里两个二位小数相加,会得到小数点后很多位,这是double的缺点,你可以使用bigdecimal 来精确运算。例子:
import java.math.bigdecimal;
public class test {
public static void main(string[] args) {
double kk = 3.14;
kk += 0.37;
system.out.println(kk);
bigdecimal b1 = new bigdecimal("3.14");
bigdecimal b2 = new bigdecimal("0.37");
bigdecimal b3 = b1.subtract(b2);
bigdecimal b4 = b1.add(b2);
system.out.println(b3);
system.out.println(b4);
}
}
- 2楼网友:醉吻情书
- 2021-02-14 15:31
你用的double吧,你用float
试了吗?
- 3楼网友:老鼠爱大米
- 2021-02-14 14:48
浮点数本来就是不精确的
用BigDecimal
- 4楼网友:夜风逐马
- 2021-02-14 13:47
double sum = ((int)((56.39+520.09+123.08)*100))/100
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯