java double b = 0.333 , 乘以100 以后小数位变多;
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java double b = 0.333 , 乘以100 以后小数位变多;相关的知识,希望对你有一定的参考价值。
double d = 0.333;
System.out.println(d*100);
结果是 33.300000000000004 小数位怎么多了
符合以下条件时java将会做自动类型转换:
(1)转换前的数据类型与转换后的类型兼容。
(2)转换后的数据类型的表示范围比转换前的类型大。
其中double的表示范围比int大,符合条件(2)。因此java会自动将原来为int的类型的变量100转换为double类型。追问
多谢回答,采纳时 还没有你的答案。
追答没什么,大家相互学习就好
参考技术A 这是精度问题,计算机一般的浮点计算都有精度,你就取小数点后几位来就行了 参考技术B 你可以转下类型double d = 0.333;
System.out.println((float)(d*100));本回答被提问者采纳
java下double相乘精度丢失问题
比如
System.out.println(0.14*100);
输出: 14.000000000000002
解决方法:
BigDecimal b = new BigDecimal(String.valueOf(0.14)); BigDecimal c = new BigDecimal(String.valueOf(100)); System.out.println(b.multiply(c)); System.out.println(b.multiply(c).intValue()); System.out.println(b.multiply(c).doubleValue());
输出:
14.00
14
14.0
以上是关于java double b = 0.333 , 乘以100 以后小数位变多;的主要内容,如果未能解决你的问题,请参考以下文章
用C语言如何实现 输入一个double 类型的数后 使该数保留小数点后两位 对第三个数进行四舍五入处理
java中变量a是double型的。怎么判断a是不是为null