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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

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

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

评分

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

查看全部评分

27 个回复

倒序浏览
  1. public static void main(String[] args) {
  2.                 DecimalFormat df2 = new DecimalFormat("###.00");
  3.                 double d = 23.3432432;
  4.                 System.out.println(df2.format(d));

  5.         }
复制代码

评分

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

查看全部评分

回复 使用道具 举报

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。
符号含义:
  0 一个数字
  # 一个数字,不包括 0
  . 小数的分隔符的占位符
以前用过这个类,所以留意了一下
回复 使用道具 举报
System.out.printf("%.2f",2.2222);
printf方法有点复杂,有兴趣去查这方面资料

评分

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

查看全部评分

回复 使用道具 举报
cs8630323 发表于 2014-11-1 23:41
System.out.printf("%.2f",2.2222);
printf方法有点复杂,有兴趣去查这方面资料

亲,printf不是C中的吗?
回复 使用道具 举报
保留后面两位是四舍五入还是直接去掉?可以先将这个数*100转变成int类型,然后再/100转换成double类型。如果是四舍五入就需要在转成int类型的时候用Math函数中的round方法取其最接近的int整数。

评分

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

查看全部评分

回复 使用道具 举报
姜浩 发表于 2014-11-2 00:36
亲,printf不是C中的吗?

java可以调C
看API
回复 使用道具 举报
姜浩 中级黑马 2014-11-2 00:59:25
8#

受教了,我去试试。
回复 使用道具 举报
姜浩 发表于 2014-11-2 00:59
受教了,我去试试。

不是调用的C吧,是原生支持printf格式化输出的。
回复 使用道具 举报
本帖最后由 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这类数据不行...怎么破!
回复 使用道具 举报
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 11:54
对于(-1,1)区间内的数字岂不是要将"###.00"改为"##0.00"才可以...

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

哈哈,发完就试了,完全可以...
回复 使用道具 举报
Paul_Chang 发表于 2014-11-2 12:57
哈哈,发完就试了,完全可以...

:handshake
回复 使用道具 举报
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
顶一个,不错,学到新知识
回复 使用道具 举报
Eagle 高级黑马 2014-11-3 07:54:21
17#

..这个还没有学到。。。现在只学到IO的FileReader。。
回复 使用道具 举报
Eagle 高级黑马 2014-11-3 07:55:42
18#
feng_0207 发表于 2014-11-1 23:25
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。
符号含义:
  0 一个数字

恩恩。虽然不会用。谢谢了。呵呵
回复 使用道具 举报
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 08:01:40
20#
戏言丶 发表于 2014-11-2 00:39
保留后面两位是四舍五入还是直接去掉?可以先将这个数*100转变成int类型,然后再/100转换成double类型。如 ...

这个好像不能规定取多少位小数啊
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马