我是靠谱客的博主 彩色鱼,最近开发中收集的这篇文章主要介绍Java中double相乘精度缺失问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天在写项目的过程中遇到了这样一个问题
10.79 * 350 = 3776.4999999999995
而不是原来应该出现的 3776.5 导致四舍五入的过程中少一变成3776

上网一查,发现是精度缺失导致的

解决办法:
相乘前将其从double类型转换为BigDecimal类型

        BigDecimal price = new BigDecimal(350);
        BigDecimal unit = new BigDecimal(10.79);
        BigDecimal money = price.multiply(unit);//将两数相乘
        double money = price.multiply(unit).doubleValue();//相乘并将结果转为double
        

最后

以上就是彩色鱼为你收集整理的Java中double相乘精度缺失问题的全部内容,希望文章能够帮你解决Java中double相乘精度缺失问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部