如题,如果我有double a,和一个scanner,我通过scanner输入了一个1,那么如果system.out.println这个double的话,会显示1.0,如何让它显示1.00呢?不要说后面加个string"0",因为用户可能输入1.21,我只想让它一直只显示小数点后2位,假设用户不会输入小数点2位以上,例如3位什么的。
还有,如何让java去判断一个用户输入了的double小数点后有几位数?
Java的Double的判断和显示问题
答案:4 悬赏:30
解决时间 2021-02-22 10:33
- 提问者网友:放荡不羁
- 2021-02-21 13:00
最佳答案
- 二级知识专家网友:邪性洒脱
- 2021-02-21 14:37
double f = 111231.5585;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
保留两位小数
---------------------------------------------------------------
java.text.DecimalFormat df =new java.text.DecimalFormat("#.00");
df.format(float param);
参考着用吧
判断几位小数只有你自己写方法判断了,先找小数点,再判断就行了
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
保留两位小数
---------------------------------------------------------------
java.text.DecimalFormat df =new java.text.DecimalFormat("#.00");
df.format(float param);
参考着用吧
判断几位小数只有你自己写方法判断了,先找小数点,再判断就行了
全部回答
- 1楼网友:萝莉姐姐鹿小北
- 2021-02-21 17:52
public static void main(String[] args) {
double d_m = 552.3;
String str_m = String.format("%.2f", d_m);
System.out.println(str_m);
}
你用这个 方法吧。 思路 清晰 很适用。。
直接 指名 小数点 长度。。
- 2楼网友:悲观垃圾
- 2021-02-21 17:06
public static void main(String[] args) {
double temp =1.0002;
//方法一
DecimalFormat dft = new DecimalFormat("#.00");
System.out.println(dft.format(temp));
//方法二
String str_m = String.format("%.2f", temp);
System.out.println(str_m);
//小数的有效位数
System.out.println(dotCouunt(temp));
}
public static int dotCouunt(double d) {
String strD = String.valueOf(d);
//double至少有一位小数点,即使输入整数也是一位,
//如果要区分将d取整后与原来的值比较即可判断是否没有小数.
int len = 1;
if (strD.indexOf(".") != -1) {
len = strD.lastIndexOf(".");
}
return len;
}
- 3楼网友:心与口不同
- 2021-02-21 15:30
看看计算机基础吧
用double计算会造成精度丢失的,而float不会出现这种情况的原因是由于它在计算机种的表示
方式是科学表示法。
如果不懂科学表示法,可以去google搜索下。
一般解决double出现精度问题的方法,是使用bigdecimal来代替double计算,银行系统的数据计算都是采用bigdecimal。
如果不知道bigdecimal可以goole一下,了解一下
我只告诉了你的解决方法,具体怎么解决你自己看着办,通过解决这些问题,可以提高你解决问题的能力以及你对搜索引擎的使用。这些能力是技术人员必须的
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯