浮点数在计算后保存为0

时间:2018-01-13 16:05:51

标签: c#

这里非常困惑,我有这段代码:

float temp = (1/10)*100;
Label.Text = Convert.ToString(temp);

由于某种原因,我的临时变量被保存为0,这意味着当我期待10时我的标签文本被更改为0,我在使用双精度时遇到了同样的问题。出了什么问题?

1 个答案:

答案 0 :(得分:0)

由于1,10和100都是整数值,因此除法也是一个int值,向下舍入。在这种情况下1/10 = 0 (1/10)*100 = 0 (1.0f/10)*100 如果你不想这样尝试使用浮动:

int a=1; ... float b = ((float) a)/10; // b will be 0.1

如果你正在处理整数变量,你必须先转换它们。这可以通过铸造来实现,如下所示:

int x = 100;
float c = (a*1.0f)/x;  // c will be 0.01f

在具有多个操作的行中执行此操作的另一种快速方法是乘以1.0f:

getSum(): number {
    let sum = 0;
    for (let i = 0; i < this.items.length; i++) {
      sum += this.items[i].num1;
    }
    return sum;
  }