社区
Java SE
帖子详情
double 精度问题
stephenr
2002-04-18 10:26:14
问题:
double a=1924676.23;
double b=1924676.22;
System.err.println("a-b="+(a-b));
显示结果为0.0000001932;
现在我需要判断
if((a-b)==0)
。
请教有没有什么好的方法解决?谢谢。
...全文
50
9
打赏
收藏
double 精度问题
问题: double a=1924676.23; double b=1924676.22; System.err.println("a-b="+(a-b)); 显示结果为0.0000001932; 现在我需要判断 if((a-b)==0) 。 请教有没有什么好的方法解决?谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
FALSE
2002-04-19
打赏
举报
回复
向上面的这种要求, 可以自己处理小数点,然后通过int或者long这些基本类型来处理。 复杂一些的可用BigDecimal.
abcdsdadfasfasfasfsa
2002-04-18
打赏
举报
回复
我同意楼上的方案
xhh
2002-04-18
打赏
举报
回复
我同意楼上的方案
jimjxr
2002-04-18
打赏
举报
回复
compareTo跟用==比较在精度上是一样的,所以没用。要判断(a-b)==0只能取一个范围,如Math.abs(a-b)<=0.00001。如果要求完全精确的话可以用BigDecimal类。
drinkant
2002-04-18
打赏
举报
回复
随便那种语言, 都不可能为0的,
解决的办法是当两者相差小于某个值,如0.000001时就认为他们相等
FALSE
2002-04-18
打赏
举报
回复
尽量不要用double和float
使用BigDecimal来处理
aprim
2002-04-18
打赏
举报
回复
Double A = new Double(a);
Double B = new Double(b);
if(A.compareTo(B)==0) {
System.out.print("equal");
}
gflei
2002-04-18
打赏
举报
回复
如果你的要求不高,上面那个方法可行
illia
2002-04-18
打赏
举报
回复
没有什么特别好的
可以把double转化成String
然后用equals方法来比较
MT5 非区间均线回归刷单EA教学
double
区间最高价= 数据.求区间最高价(Symbol(),应用周期,MODE_CLOSE,0,区间根数);
double
区间最低价= 数据.求区间最低价(Symbol(),应用周期,MODE_CLOSE,0,区间根数); bool...
Double
精度
问题
在开发中我们会经常遇到
double
计算和比较的情况,之前也知道计算机对于
double
的表示方法是有
精度
损失的,但是一直不知道该怎么去避免这个
问题
。写c++的时候看到过用两个数值求差,小于某个阈值就认为这两个数字是相等的,那么java里该怎么解决这个
问题
呢?
double
精度
问题
解释:https://blog.csdn.net/wcxiaoych/article/details/42806313
double
精度
问题
解决:https://zhuanlan.z...
java
double
的
精度
_java中
Double
精度
问题
问题
描述:java代码如下:@Testpublic void test01(){String num1 ="1.3";String num2 ="1.10";String v = String.valueOf(
Double
.valueOf(num1) +
Double
.valueOf(num2));System.out.println(v);}计算输出结果:2.4000000000000004
问题
...
QString to
Double
精度
问题
QString to
Double
后,因为
精度
问题
,会造成相加、相加、比较时,不准备。 现在把需要处理的
double
放大10的N次方后,变成整数后,再进行相加相减处理,然后再缩小10的N次方倍。 代码如下: //获取小数位 int getDecimalNum(QString str) { int n = str.indexOf("."); if(n < 0) { n=0; } else { n = str..
又是
double
精度
问题
由于历史, 项目中使用的
double
有位大哥使用了
double
*100 public static void main(String[] args) {
double
a = 152.70; System.out.println(a); System.out.println(a * 100);//15280.000000000002 System.out.println(Math.round(a * 100));//还凑合
double
b = 152.7.
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章