这里非常困惑,我有这段代码:
float temp = (1/10)*100;
Label.Text = Convert.ToString(temp);
由于某种原因,我的临时变量被保存为0,这意味着当我期待10时我的标签文本被更改为0,我在使用双精度时遇到了同样的问题。出了什么问题?
答案 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;
}