java解决精度问题

java解决精度问题,第1张

java解决精度问题
在进行浮点类数据计算的时候,浮点参与计算,会左移或右移n位,直到小数点移动到第一个有效数字的右边。于是11.9在转化为二进制后 小数点左移3位,就得到1. 011 11100110011001100110(精度丢失2)
于是最终浮点型运算出现了精度丢失误差。
解决方法:1.使用维护精度的二进制编码的十进制(BCD)库

              2.用String来构造BigDecimal。(BigDecimal是java.math.BigDecimal类)
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = ReportApplication.class)
public class PrecisionTest {
    //鼓励用BigDecimal解决精度问题
    @Test
    public void test1() {
        Double a = 12.0;
        Double b = 11.9;
        System.out.println("last result:" + (a - b));
        System.out.println("=============");
        ///we use BigDecimal for resolve precision;
        BigDecimal aMal = new BigDecimal(Double.toString(a));
        BigDecimal bMal = new BigDecimal(Double.toString(b));
      

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/871966.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存