浮点计算错误

时间:2009-05-09 16:19:55

标签: c#

在C#中

float ratio = 185 / srcRect.Width;

其中srcRect.Width = 400

返回0,返回0.45 ...

float的最小值是-3.40282347E+38,那么这怎么可能呢?

3 个答案:

答案 0 :(得分:14)

您正在执行整数除法,因此185/srcRect.Width将返回0.您需要将表达式更改为

float ratio = 185.0f / srcRect.Width;

答案 1 :(得分:0)

185是整数字面值,因此执行的除法是整数除法。

要执行浮动除法,请改用185.0或185.0f(前者是双精度型,后者是浮点型)

答案 2 :(得分:0)

“f”或“d”后缀可以添加到文字数字中,分别将它们变成浮点数或双打数。

像这样:

float ratio = 185f / srcRect.Width;

请注意,“185.0”实际上是双倍的,除非它还有“f”后缀。