zoukankan      html  css  js  c++  java
  • Java中float类型精度问题

    今天发现了一个小的问题,在网上找了说的不多,在这记录下来方便自己和比人解决自己的问题吧。

    代码片段

    1float unit = Double.valueOf(ActionUtils.getBillingTransformUnit(request));//取出换算单位1000.0
    2                float   svt = ((curveSegment.getEndVal()+1))/unit;//加0.001
    3                segmentForm.setStartValTemp(String.valueOf(svt));

    我们的计算最小单位是厘,页面上的startValTemp是元,所以必须为三位小数,当curveSegment.getEndVal()取出的是一千万内的整数时,加一计算最后在页面上都能显示增加了一厘。当为两千万时,String.valueOf(svt)就变成了2位小数了,从而丢失了加上的1。

    引用我在mantis上的原始介绍“程序中用的数字类型Float 单位是厘 填20000 后转为20000000 后加1等于20000001 除以1000.0后的值在本地化字符串时为20000.0 出现精度丢失问题 (精度问题,float精度为7--8位,8位的情况是第一位是1 当是2时进位后面的精度丢失?)”

     故问题就出在使用的类型精度不满足,属于选择类型问题。使用double类型解决问题

    1    double unit = Double.valueOf(ActionUtils.getBillingTransformUnit(request));
    2                double svt = ((curveSegment.getEndVal()+1))/unit;
    3                segmentForm.setStartValTemp(String.valueOf(svt));
  • 相关阅读:
    74.Android之四种启动模式
    Android面试总结 (转)
    1.Android常见异常:android.view.WindowLeaked 分析以及解决办法
    73.Android之SparseArray替代HashMap
    C#(类)
    C#(一维数组)
    C#(二维数组/集合)
    c#(特殊集合)
    C#字符串去除html格式
    获取文件的后缀名 和 Process进程
  • 原文地址:https://www.cnblogs.com/xd502djj/p/1500546.html
Copyright © 2011-2022 走看看