CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

java的四舍五入问题(1.15是1.2;1.45就是1.4?)真是搞不懂,我用的是DecimalFormat的方式(在线等)

楼主gboy(★)(★)2002-10-27 23:34:55 在 Java / J2SE / 基础类 提问

double   d1   =1.15;  
  double   d2   =1.45;  
  System.out.println(   new   DecimalFormat("#########.#").format(d1));  
  System.out.println(   new   DecimalFormat("#########.#").format(d2));  
   
  输出结果:  
   
  1.2  
   
  1.4  
   
  问题点数:20、回复次数:9Top

1 楼gboy(★)(★)回复于 2002-10-27 23:58:30 得分 0

似乎前一位是偶数就不进位   是奇数就没问题Top

2 楼mercury1231(为论文而拼搏,老板就是上帝)回复于 2002-10-28 00:19:11 得分 0

还有这种说法?Top

3 楼wdhs(苍穹·一骑)回复于 2002-10-28 00:29:25 得分 0

4舍6进5取偶Top

4 楼alphazhao(迷路飞羊)回复于 2002-10-28 09:07:54 得分 0

想保证精度的同时要求四舍五入的话用BigDecimal.setScale  
   
  double   f   =   34.232323;  
  BigDecimal   b   =   new   BigDecimal(f);  
  double   f1   =   b.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();  
   
  //   b.setScale(2,   BigDecimal.ROUND_HALF_UP)   表明四舍五入,保留两位小数  
  上面是对double类型的处理,如果对float的,则将上面所有的double字段换成float就行  
   
  Top

5 楼gboy(★)(★)回复于 2002-10-28 10:01:16 得分 0

BigDecimal的方式我也试过了,一样的结果啊?Top

6 楼tanghuan()回复于 2002-10-28 10:11:01 得分 20

这是因为在浮点表示(float   double)时,1.45f   与实际的1.45不精确相等。你可以查看有关资料就知道了。  
  你也可以用如下的语句看看就知道了  
          System.out.println(new   java.math.BigDecimal(1.45d));  
   
   
  再试一下如下的代码。自己体会  
  double   f1   =new   java.math.BigDecimal("1.45").setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();  
   
  出现的原因:在10进制的有限小数在2进制中很多都是无限循环小数。Top

7 楼tomxutomxu(shprog)回复于 2002-10-28 10:30:37 得分 0

(1.45)   1.4499999999999999555910790149937383830547332763671875  
  (1.35)   1.350000000000000088817841970012523233890533447265625Top

8 楼sucker(【^_^】)回复于 2002-10-29 04:47:52 得分 0

借宝地用,请问搂主  
  String   temstr   =   new   DecimalFormat("#########.#").format(d1);  
  System.out.println(temstr);  
  有错吗?不行的话如何改?Top

9 楼tomxutomxu(shprog)回复于 2002-10-29 13:14:55 得分 0

String   temstr   =   new   DecimalFormat("#.#").format(d1);  
  System.out.println(temstr);  
  Top

相关问题

  • java中四舍五入
  • 急问:java四舍五入的问题??
  • Java中有没有“四舍五入”的运算方法?
  • 在Java中怎么进行四舍五入的运算?
  • VC中四舍五入函数?在线等待
  • js中实现四舍五入的问题。在线急盼!!!
  • 四舍五入
  • 四舍五入
  • java中怎样实现四舍五入?高手过来啊,最高分啊
  • 求救:java里如何取整一个浮点数(不做四舍五入)

关键词

  • 四舍五入
  • decimalformat
  • bigdecimal
  • temstr
  • setscale
  • half
  • double
  • round
  • format
  • println

得分解答快速导航

  • 帖主:gboy
  • tanghuan

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo