C# 计算后将浮点数另存为0

C# 计算后将浮点数另存为0,c#,C#,这里非常混乱,我有以下代码: float temp = (1/10)*100; Label.Text = Convert.ToString(temp); 由于某些原因,我的temp变量被保存为0,这意味着当我预期为10时,我的标签文本被更改为0,当使用双精度时,我会遇到同样的问题。出了什么问题?因为1、10和100都是整数值,除法也是一个整数,向下舍入。在这种情况下,1/10=0,因此1/10*100=0 如果您不想这样做,请尝试使用浮动: 1.0f/10*100 如果您使用的是整数变量,您必

这里非常混乱,我有以下代码:

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

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

因为1、10和100都是整数值,除法也是一个整数,向下舍入。在这种情况下,1/10=0,因此1/10*100=0 如果您不想这样做,请尝试使用浮动:

1.0f/10*100

如果您使用的是整数变量,您必须首先转换它们。这可以通过铸造实现,如下所示:

int a=1;
...
float b = ((float) a)/10; // b will be 0.1
在具有多个操作的行中执行此操作的另一种快速方法是乘以1.0f:

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

浮子温度=1/10.0*100;1/10整数除法->==0*100==0正在转换为整数,请阅读此-。顺便说一句,你们并没有努力去寻找它。是的,问题是1/10是两个整数被除。简单修正是1.0f/10.0f,它显式地将两个数字声明为浮点数,因此没有什么意外。如果我使用的是变量,而不仅仅是数值,我假设我只需要首先将它们全部转换为浮点数?@andowneate是的,我更新了答案