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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马新人 中级黑马   /  2014-11-24 15:45  /  1606 人查看  /  8 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

昨天在做阳哥给的练习题的时候,碰到一个小问题。阳哥要求函数结果小数点后保留8位以上有效数字。在网上查了一下保留有效位数小数的方法,一般会用到2种方法。
一种是DecimalFormat,在创建对象、调用构造函数的时候设置数字格式,如new DecimalFormat("###.00"),就是保留2位小数,然后对象调用Format()函数就会返回结果。就算没有结果没有小数,也会用0补齐。如:1.00。
第二种是调用Math.round(float a)方法。如果想保留2位小数的话,可以使用Math.round((float)num*100)/100, Math.round(float a)返回值  int num=(int)Math.round(a+0.5d) ,但是这种方法末尾的0是不会显示的。
所以DecimalFormat应该是调用了Math.round()方法。通过接收的字符串,用“."分割,判断要保留的有效位数n,然后将String转成Float类型值,然后用round方法进行运算,再将结果转成字符串存入StringBuilder,判断小数点位数,决定补多少个0。

8 个回复

倒序浏览
额~~我没有用你说的方法,我是把结果转成字符串,再转成字符数组,然后判断长度,最后输出,结果就能得到至少保留八位小数了,具体代码,就不上传了:lol
回复 使用道具 举报
两种方法我都用了:lol
回复 使用道具 举报
还是pintf方法高端
回复 使用道具 举报
受教了,至少学会了一种解决方法
回复 使用道具 举报
原来 还可以这么搞
回复 使用道具 举报
String.format("结果为:%.14f", result); // 保留了14位小数
还有这个方法,这个输出比较方便。
回复 使用道具 举报
NICE这刚好是我想要的·····
回复 使用道具 举报
谢谢分享,试了试,可以
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马