C浮点除法结果舍入为零

时间:2016-02-13 03:06:54

标签: c floating-point division

为什么这个表达式给我输出零?

@RequestMapping(value = "/inventario/",consumes = MediaType.APPLICATION_JSON, 
                method = RequestMethod.POST)
public ResponseEntity<Void> insereItem(@RequestBody Item item){...} 

将其分为两部分,给出正确的结果:

float x = ((1000)/(24 * 60 * 60));

2 个答案:

答案 0 :(得分:3)

声明

float x = ((1000)/(24 * 60 * 60));

执行以下操作:

  1. 声明x类型的变量float
  2. 评估((1000)/(24 * 60 * 60))
    1. 评估24*60*60,即86400。
    2. 评估1000/86400为0。
  3. 将结果(即0)分配给x
  4. 在第二步中,((1000)/(24 * 60 * 60))为零 - 除法是整数除法,因为两个操作数都是整数。事后将结果分配给浮点变量这一事实没有任何区别。

    最简单的解决方法是确保除法的任一侧是浮点数,因此它将使用浮点除法。例如,您可以将1000更改为1000.0f

答案 1 :(得分:0)

看到这个答案,它会给你正确的输出

#include <stdio.h>

int main(void) {
    float x = (float)1000/(24 * 60 * 60);
    printf("%f",x);
    return 0;
}

输出:0.011574 输出也可以看出:http://ideone.com/6bMp9r