当我发现我的代码不能正常工作时,我感到非常惊讶所以我创建了一个控制台应用程序来查看问题所在,当我看到下面的代码返回0时我更加惊讶
static void Main(string[] args)
{
float test = 140 / 1058;
Console.WriteLine(test);
Console.ReadLine();
}
我正在尝试以%显示结果并将其放入我的应用程序中的进度(意味着(140/1058)* 100)栏,第二个值(1058)实际上是我的应用程序中的ulong类型,但是似乎不是问题。
问题是 - 问题出在哪里?
答案 0 :(得分:8)
您正在使用整数运算,然后将结果转换为浮点数。改为使用浮点运算:
float test = 140f / 1058f;
答案 1 :(得分:4)
问题是你要分割整数而不是浮点数。只有结果才是浮动。将代码更改为以下
float test = 140f / 1058f;
修改强>
John提到有一个ulong类型的变量。如果是这种情况,那么只需使用演员操作
ulong value = GetTheValue();
float test = 140f / ((float)value);
注意,因为你从ulong到float,所以可能会失去精度。
答案 2 :(得分:3)
这将按照你期望的方式运作......
float test = (float)140 / (float)1058;
顺便说一下,你的代码对我来说很好(打印0.1323251到控制台)。
答案 3 :(得分:2)
正在执行的除法是整数除法。取代
float test = 140 / 1058;
与
float test = 140f / 1058;
强制浮点除法。
一般来说,如果你有
int x;
int y;
并希望执行浮点除法,然后您必须将x
或y
投射到浮点数中,如
float f = ((float) x) / y;