【问题标题】:different result of int multiplication vs float multiplication [closed]int乘法与浮点乘法的不同结果[关闭]
【发布时间】:2015-02-06 03:53:48
【问题描述】:

我有这个代码:

    float number1 = 2f / 12;
    System.out.println(number1);
    int number2 = 6;
    float x = number1 * number2;
    System.out.println(x);

我得到的输出是:

0.16666667
1.0

为什么?当我将number1和number2相乘时,number2应该被提升为float类型,我应该得到一个0.96

当我将代码修改为:

    float number1 = 0.16f;
    System.out.println(number1);
    int number2 = 6;
    float x = number1 * number2;
    System.out.println(x);

我得到了很好的结果:

0.16
0.96

为什么第一个示例中的操作float = float * int 会产生不好的结果?

【问题讨论】:

    标签: java floating-point int floating-accuracy floating-point-conversion


    【解决方案1】:

    因为在第二种情况你定义了:

    float number1 = 0.16f;
    //0.16*6=0.96;
    

    但对于第一种情况,您有:

    2 / 12 = 0.166666667    
    0.166666667*6=1
    

    【讨论】:

      【解决方案2】:

      number2 应该提升为浮点型

      2号得到升为浮动。

      我应该得到 0.96

      你应该得到 1.0,因为:

      2 / 12 * 6 = 2 / 2 = 1

      0.16 * 6 = 0.96

      ...这就是为什么。在这种情况下,它与计算 int vs float 算术无关,它只是算术。先算算!

      【讨论】:

      • 亲爱的投票者,您愿意详细说明这个答案的不足之处吗?
      猜你喜欢
      • 2018-01-04
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      相关资源
      最近更新 更多