关于在Android或Java中精度缺失的解决方法
2024-10-21 06:06:31
left,right是两个String类型的字符串,myres是一个double类型的变量。
如果我们用下面的语句把left,right先转换为double后直接加法的话,如果作3.3乘3之类的运算(被乘数是奇数会出问题),会变成9.8888888889,而不是我们想要的9.9,这就是精度缺失。
myres=Double.valueOf(left)+Double.valueOf(right);
解决方法:
double lt=Double.parseDouble(left);
double rt=Double.parseDouble(right);
BigDecimal b1 = new BigDecimal(Double.toString(lt));
BigDecimal b2 = new BigDecimal(Double.toString(rt));
加法
myres=b1.add(b2).doubleValue();
return myres;
减法
myres=b1.subtract(b2).doubleValue();
return myres;
乘法
myres=b1.multiply(b2).doubleValue();
return myres;
除法
myres=b1.divide(b2).doubleValue();
return myres;
返回的myres是正确的结果,这个也可以应用于Android开发过程中。
最新文章
- Java Native Interface 四--JNI中引用类型
- C#学习网站记录
- webshell
- 高大上技术之sql解析
- CentOS服务器配置发送邮件服务
- [Android] 混音器AudioMixer
- Visual Studio 2015 开发MVC4出现错误
- 优先队列(priorityqueue)
- SpringBoot 中常用注解
- [CQOI 2015]选数
- 一个spring mvc 需要用到到文件
- lua分割字符串
- TensorFlow从入门到理解(四):你的第一个循环神经网络RNN(分类例子)
- python 可迭代对象
- 使用Pandas_UDF快速改造Pandas代码
- POJ 3126 Prime Path (素数+BFS)
- 深度学习课程笔记(十七)Meta-learning (Model Agnostic Meta Learning)
- MFC模块状态(一)
- Android中线程通信的方式
- http 请求和格式
热门文章
- Linux时间子系统(十二) periodic tick
- PowerDesigner列名作为注释
- Linux前台、后台、挂起、退出、查看命令汇总
- opencv源代码分析:icvGetTrainingDataCallback简单介绍
- Angularjs Module类的介绍及模块化依赖
- [na]pc加入域认证细节
- 教你轻松自己定义ViewPagerIndicator
- %02x和%2x区别
- prequeue receive queue backlog queue
- angular学习笔记(九)-css类和样式2