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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Eagle 于 2014-11-3 14:28 编辑

/*
需求:
给定一个小数,保留小数的后两位。

*/
毕老师视频里说的。
完全没有思路。
除了转成字符串切割判断长度这个想法。。也就想想
没有式。。感觉肯定不是这么做的。。
大神指导指导呗

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

27 个回复

正序浏览
我当初就是*100取整,再除100double强转即可了!
不过在这里受教了,确实没想到能够用正则表达式!
还有那个DecimalFormat类,我连听都没听过
printf这个也是第一次听...
回复 使用道具 举报
还没学到的话 可以先自己写个土办法
  1. public class Test {
  2.         public static void main(String[] args)
  3.         {
  4.                 double d = 3.1415926;
  5.                 d = (double)(int)((d+0.005)*100)/100;
  6.                 System.out.println(d);
  7.         }     
  8. }
复制代码
回复 使用道具 举报
Eagle 高级黑马 2014-11-3 12:47:16
26#
戏言丶 发表于 2014-11-3 11:20
首先,你*100转成int类型的时候就错了,应该是int x = (int)(d*100);如果像你那样的话是先把d转成int再*1 ...

额。原来如此。。呵呵,谢谢了,这次能行了。
回复 使用道具 举报
Eagle 发表于 2014-11-3 08:10
还是不行的。不知道为啥。

首先,你*100转成int类型的时候就错了,应该是int x = (int)(d*100);如果像你那样的话是先把d转成int再*100,这样就将后面的小数全舍去了。然后,你/100的时候应该先把x转成double类型,即double y = (double)x/100;否则x/100时x为int类型得到的会是一个int类型,然后才自动转为double类型。
回复 使用道具 举报
Eagle 高级黑马 2014-11-3 08:20:57
24#
feng_0207 发表于 2014-11-1 23:25
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。
符号含义:
  0 一个数字

用了一下,感觉不错,。呵呵。谢谢了。
回复 使用道具 举报
Eagle 高级黑马 2014-11-3 08:10:15
23#
戏言丶 发表于 2014-11-2 15:04
加上String result = String.format("%.2f",d);输出result就是保留两位小树

还是不行的。不知道为啥。
  1. {
  2.         public static void main(String[] args)
  3.         {
  4.                 double d = 12.3546;
  5.                 int x =(int)d*100;
  6.                 double y = x/100;
  7.                 sop(y);
  8.                 String result = String.format("%.2f",y);
  9.                 sop(result);
复制代码


运行结果:
E:\java\day18>java MathTest
12.0
12.00
回复 使用道具 举报
Eagle 高级黑马 2014-11-3 08:06:17
22#
戏言丶 发表于 2014-11-2 15:04
加上String result = String.format("%.2f",d);输出result就是保留两位小树

理解了。。原来如此。。。哈哈。哥们聪明啊。顶一个
回复 使用道具 举报
Eagle 高级黑马 2014-11-3 08:02:43
21#
feng_0207 发表于 2014-11-2 12:34
试一下这个
DecimalFormat df2 = new DecimalFormat("0.00");
共同探讨。

现在基础还没有学到。学习了
回复 使用道具 举报
Eagle 高级黑马 2014-11-3 08:01:40
20#
戏言丶 发表于 2014-11-2 00:39
保留后面两位是四舍五入还是直接去掉?可以先将这个数*100转变成int类型,然后再/100转换成double类型。如 ...

这个好像不能规定取多少位小数啊
回复 使用道具 举报
Eagle 高级黑马 2014-11-3 08:00:38
19#
cs8630323 发表于 2014-11-1 23:41
System.out.printf("%.2f",2.2222);
printf方法有点复杂,有兴趣去查这方面资料

恩恩,好的,谢谢:D
回复 使用道具 举报
Eagle 高级黑马 2014-11-3 07:55:42
18#
feng_0207 发表于 2014-11-1 23:25
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。
符号含义:
  0 一个数字

恩恩。虽然不会用。谢谢了。呵呵
回复 使用道具 举报
Eagle 高级黑马 2014-11-3 07:54:21
17#

..这个还没有学到。。。现在只学到IO的FileReader。。
回复 使用道具 举报
顶一个,不错,学到新知识
回复 使用道具 举报
Paul_Chang 发表于 2014-11-2 11:43
num = (double)(int)(num*100)/100;
貌似对于(-0.01,0.01)区间内的数不行,还有例如2.3000或者2.3001这类数 ...

加上String result = String.format("%.2f",d);输出result就是保留两位小树
回复 使用道具 举报 1 0
Paul_Chang 发表于 2014-11-2 12:57
哈哈,发完就试了,完全可以...

:handshake
回复 使用道具 举报
feng_0207 发表于 2014-11-2 12:34
试一下这个
DecimalFormat df2 = new DecimalFormat("0.00");
共同探讨。

哈哈,发完就试了,完全可以...
回复 使用道具 举报
Paul_Chang 发表于 2014-11-2 11:54
对于(-1,1)区间内的数字岂不是要将"###.00"改为"##0.00"才可以...

试一下这个
DecimalFormat df2 = new DecimalFormat("0.00");
共同探讨。
回复 使用道具 举报
feng_0207 发表于 2014-11-1 23:25
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。
符号含义:
  0 一个数字

对于(-1,1)区间内的数字岂不是要将"###.00"改为"##0.00"才可以...
  1. public static void main(String[] args) {
  2.                 DecimalFormat df2 = new DecimalFormat("##0.00");
  3.                 double d = 23.3432432;
  4.                 System.out.println(df2.format(d));

  5.         }
复制代码


回复 使用道具 举报
本帖最后由 Paul_Chang 于 2014-11-2 12:21 编辑
戏言丶 发表于 2014-11-2 00:39
保留后面两位是四舍五入还是直接去掉?可以先将这个数*100转变成int类型,然后再/100转换成double类型。如 ...

num = (double)(int)(num*100)/100;
貌似对于(-0.01,0.01)区间内的数不行,还有例如2.3000或者2.3001这类数据不行...怎么破!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马