概述
1.可以在传递给服务器时采用字符串的形式进行参数的传递。因为double天然的缺陷,在保存成二进制时会出现精度丢失。保存成字符串是一种非常容易的解决方案。
(精度丢失原因,更详细的请自行百度,我的目的只是实现数据的可视性、保留两位或者多位)
2.使用NSDecimalNumber进行计算。
//注意:
// 1.一般我们保存成.2f时,会进行四舍五入。
// 2.double转换为NSInteger时,会把小数点后的小数给截取掉。
double x1 = 0.026;
System.out.println(String.format("%.2f", x1));
2.数据转换
// 方案一:
get_double = (double)(Math.round(result_value*100)/100.0)
// 方案二:
DecimalFormat df = new DecimalFormat("#.##");
get_double = Double.ParseDouble(df.format(result_value));
// 方案三:
get_double = Double.ParseDouble(String.format("%.2f",result_value));
// 方案四:
BigDecimal bd = new BigDecimalresult_value();
BigDecimal bd2 = bd.setScale(2,BigDecimal .ROUND_HALF_UP);
get_double = Double.ParseDouble(bd2.ToString());
// 自己亲测 ok
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("#.##");
Double dou = 3.115;
System.out.println(df.format(dou)); // 3.12
System.out.println(String.format("%.2f",dou));// 3.12
System.out.println((Math.round(dou*100)/100.0)); //3.12
BigDecimal bd = new BigDecimal(dou);
BigDecimal bigDecimal = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("bigDecimal = " + bigDecimal); // 3.12
}
最后
以上就是忧虑航空为你收集整理的Double-精度丢失-解决方法的全部内容,希望文章能够帮你解决Double-精度丢失-解决方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复