double sum_debit=0;
for(int m=0;m
System.out.println("借方金额:"+Double.parseDouble(debit_mon[m]));
debit_mona.add(debit_mon[m]);
sum_debit=sum_debit+Double.parseDouble(debit_mon[m]);
System.out.println("借方相加金额"+sum_debit);
}
结果---》:
借方金额:833.29
借方相加金额833.29
借方金额:1777.22
借方相加金额2610.51
借方金额:20738.73
借方相加金额23349.239999999998
借方金额:0.0
借方相加金额23349.239999999998
问题:为什么第三个金额“20738.73”后,会出现那么多小数呢?怎么解决?
主要是我做借贷要比较相等,这样子肯定不能相等了。
--------------------------------------------------------------------------------
由精度问题引起的。2进制和10进制的差异产生这样的结果。
--------------------------------------------------------------------------------
可以自己控制转换,或者使用BigDecimal
--------------------------------------------------------------------------------
自己想出来了!哈哈
BigDecimal b1 = new BigDecimal(Double.toString(Double.parseDouble(debit_mon[m])));
BigDecimal b2 = new BigDecimal(Double.toString(sum_debit));
sum_debit=b2.add(b1).doubleValue();
--------------------------------------------------------------------------------
java的bug
分享到:
相关推荐
Java Double相加出现的怪事,浮点运算不精确问题
本篇文章介绍了,程序中两个Double类型相加出现误差的解决办法。需要的朋友参考下
防止Double加double后形成科学计数法问题
C语言 实现大数加法,在加法运算的时候假如有两个10000位数的两个数进行相加,那么用int long double型都装不下这么多位数,所以采用char数组来实现加法运算,解决精度的问题
string转换double string转换double string转换double string转换double
Java中的简单浮点数类型float和double不能够进行运算,因为大多数情况下是正常的,但是偶尔...也就是不能使用BigDecimal(double val) 方法,你会发现没有效果。要使用BigDecimal(String val) 方法。具体例子如下所示。
Double Take 容灾解决方案介绍89页.pptx
double,这是java刚刚学习的java文件
将cell类型的数据转换为double类型的函数
//将double类型转为_int64,防止精度1丢失 //将double类型转为_int64,防止精度1丢失
double to string double to string
限制文本框只能输入double类型的代码案例!
本资源整理了几种c++中double与string相互转换方式,包含完整的vs2010工程。可直接使用。
软件名称:Battery Doubler v1.2.1 软件语言:英语 运行环境: 98/NT/XP/2003/vista32 笔记本电脑 软件大小:1.3M Battery Doubler的功能很多,可以实现电池校验程序、自动降频、关闭暂不使用的设备和接口。它延长...
学习DELPHI的方法,以一个DOUBLE值来表示时间,这样很容易算出两者的时间差等信息。同时具有一个将时间转为字符串的函数,方便调用。 同时包含一个CHDateTime类,便于使用。 C++中的std::string功能强大,一般在可以...
输入一科学计数法形式字符串,如1234.5e-6 ;通过double atof()将其转换成double形的数据
在判断数是否为double时,会用到小数点处理的问题,一个小数点还是多个小数点
将32bit的float型数据 转换为 64bit的double类型存储在内存中,跨平台可用。解决C51等平台double类型为32bit存储的问题。
使用Java,double 进行运算时,经常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1。 特别在实际项目中,通过一个公式校验该值是否大于0,如果大于0我们会做一件事情,小于0我们又处理其他事情。 这样的...