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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

以下是我写的代码,有点问题,正常的可以算出来
  1. import java.util.*;
  2. class  MathDemo
  3. {
  4.         public static void main(String[] args)
  5.         {

  6.                 //给定一个小数,保留小数点最后两位
  7.                 baoliu(-12.000);
  8.         }
  9.         public static void baoliu(double d)
  10.         {
  11.                 int x = (int)d;           //将输入的小数取整
  12.                 double m = d -x;      //将输入的小数取小数部分
  13.                 m = m*100;             //将小数部分*100
  14.                 m = Math.round(m);   //  对小数*100四舍五入
  15.                 m = x+m/100;       //取整部分+小数四舍五入部分
  16.                 sop(m);
  17.         }
  18.         public static void sop(Object obj)
  19.         {
  20.                 System.out.println(obj);
  21.         }
  22. }
复制代码

  可是输入12.000时 输出的时12.0  而不是12.00  怎么样修改可以解决问题 求各位大神解决!

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

11 个回复

倒序浏览
首先,我觉得代码没必要写那么复杂吧,这样就行;不过我也没能解决你的问题,因为得出的结果是一样的,一起等大神吧。

回复 使用道具 举报
本帖最后由 ZSMAN 于 2015-5-7 23:27 编辑

        double d = 3.1415926;
        String value = String .format("%.2f",d);        d=Double.parseDouble(value);
回复 使用道具 举报
对输出小数位数判断
回复 使用道具 举报
2楼给出的是字符串格式化么
回复 使用道具 举报
ZSMAN 发表于 2015-5-7 23:18
double d = 3.1415926;
        String value = String .format("%.2f",d);        d=Double.parse ...

这个小数点控制 我在C++里面用过,那时候写ACM的时候写过  没找到java里面的这个类
回复 使用道具 举报
ZSMAN 发表于 2015-5-7 23:18
double d = 3.1415926;
        String value = String .format("%.2f",d);        d=Double.parse ...

这个小数点控制 我在C++里面用过,那时候写ACM的时候写过  没找到java里面的这个类。
回复 使用道具 举报
liquid1993 发表于 2015-5-8 13:47
这个小数点控制 我在C++里面用过,那时候写ACM的时候写过  没找到java里面的这个类。 ...

什么类?String类就够了~String里面有一个static String format(String format, Object... args)  
回复 使用道具 举报
用正则表达萌萌哒
回复 使用道具 举报
忆墨 发表于 2015-5-8 14:28
用正则表达萌萌哒

只用过python的正则表达式。。。而且基本忘啦。。
回复 使用道具 举报
double m 结果应该是0.0吧
回复 使用道具 举报
dengxing 发表于 2015-5-8 23:13
double m 结果应该是0.0吧

对啊  所以在想 保留两位小数怎么办
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马