public class Main {
public static void main(String[] args) {
System.out.println(2.0-1.1);
}}输出结果是:0.89999999999
public class Main {
public static void main(String[] args) {
//System.out.println(2.0-1.1);
float i, j, sum;
i = Float.parseFloat("2.0");
j = Float.parseFloat("1.1");
System.out.println(sum = i - j);
}}
输出结果为预想结果:0.9.如果说问题出在精度上,那float和double都是浮点数,都有误差,但之所以parsefloat之后输出结果正确是因为float的误差小于double的,看到这个0.9与0.89999999999一样,其实也是个误差值。这样理解正确吗?请高手指教。谢谢。
public static void main(String[] args) {
System.out.println(2.0-1.1);
}}输出结果是:0.89999999999
public class Main {
public static void main(String[] args) {
//System.out.println(2.0-1.1);
float i, j, sum;
i = Float.parseFloat("2.0");
j = Float.parseFloat("1.1");
System.out.println(sum = i - j);
}}
输出结果为预想结果:0.9.如果说问题出在精度上,那float和double都是浮点数,都有误差,但之所以parsefloat之后输出结果正确是因为float的误差小于double的,看到这个0.9与0.89999999999一样,其实也是个误差值。这样理解正确吗?请高手指教。谢谢。
public static void main(String[] args) {
//System.out.println(2.0-1.1);
System.out.println(new BigDecimal("2.0").subtract(new BigDecimal("1.1")));
}}
System.Format怎么用?
--------------
javascript也有这个问题
待解决~
可能我说得不够清楚吧,我的意思是说“float的误差小于double”这样理解正确吗??呵呵。
double精度比float高的多。
建议看一下浮点数的二进制表示方法(IEEE754)
对对对。我理解反了,double时输出0.89999999999 ,float时输出0.9,double的精度自然要高得多不好意思。多谢指点。。