A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zjqlovelyy 中级黑马   /  2013-1-7 19:35  /  1249 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.math.*;

  2. class test25
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 double money = 2;
  7.                 double price = 1.1;
  8.                 double result = money - price;
  9.                 System.out.println(result);
  10.                 BigDecimal m = new BigDecimal(money);
  11.                 BigDecimal p = new BigDecimal(price);
  12.                 BigDecimal r = m.subtract(p);
  13.                 System.out.println("s:"+r);
  14.         }
  15. }
复制代码
关于上述的代码,在计算浮点型都误差了,有无其它误差那么大的方法
下面是代码运行的结果


未命名.jpg (7.73 KB, 下载次数: 30)

未命名.jpg

3 个回复

倒序浏览
在API中提供了BigDecimal(String val) 将 BigDecimal 的字符串表示形式转换为 BigDecimal。如果非要精度精准的话 可以把double转换成字符串
这是我写的代码
import java.math.BigDecimal; public class test25
{
public static void main(String[] args)
{
double money = 2;
double price = 1.1;
double result = money - price;
System.out.println(result);
BigDecimal m = new BigDecimal(Double.toString(money));
BigDecimal p = new BigDecimal(Double.toString(price));
double r = m.subtract(p).doubleValue();
System.out.println("s:"+r);
}
}
运行结果:
0.8999999999999999
s:0.9
回复 使用道具 举报
蔡少凯 发表于 2013-1-7 19:57
在API中提供了BigDecimal(String val) 将 BigDecimal 的字符串表示形式转换为 BigDecimal。如果非要精度精 ...

嗯嗯,谢谢
回复 使用道具 举报
问题已解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马