永发信息网

java 小数相加问题

答案:5  悬赏:60  手机版
解决时间 2021-02-14 21:25
  • 提问者网友:不爱我么
  • 2021-02-14 11:42
我的购物车了几个商品假如价钱为56.39 , 520.09 , 123.08 三个数。但得出来的结果是699.5600000000001
请问这个要怎么解决
最佳答案
  • 五星知识达人网友:走死在岁月里
  • 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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯