我有一个计算例如2/4 = 0.5,除了我找不到存储该值的数据类型!每次我进行计算时都会显示0。
有人有任何建议吗?
答案 0 :(得分:12)
double
或decimal
都可以正常使用。
但是,如果你只是写:
// Wrong
double x = 2 / 4;
然后它仍将使用整数除法 - 因为除法运算符的两个操作数都是int
类型。
您可以将其中一个或两个操作数强制转换为double,或者将double literal用于其中一个或两个:
// Any of these...
double x = (double) 2 / 4;
double x = 2 / (double) 4;
double x = (double) 2 / (double) 4;
double x = 2.0 / 4;
double x = 2 / 4.0;
double x = 2.0 / 4.0;
double x = 2d / 4;
double x = 2 / 4d;
double x = 2d / 4d;
请注意,double
和decimal
都是浮点类型。它们不代表任意有理数(分数)。例如,两者都不能准确地代表1/3。如果您需要一个有理数字类型,您必须自己编写或寻找第三方实现。
答案 1 :(得分:4)
确保除数或被除数中的至少一个是浮点数:
double d = 2 / 4.0;
Console.WriteLine(d): // Writes: 0.5
答案 2 :(得分:3)
使用2/4.0
强制它使用浮点算术。然后你可以把它存储在一个双人:
double d = 2/4.0;
如果在实际代码中有变量,则将除数转换为double
:
int i = 2;
int j = 4;
double d = i/(double)j;
答案 3 :(得分:1)
你可以施展,
double value = (double)2/4;
或者您可以提供带小数的输入
double value = 2.0/4.0;
答案 4 :(得分:1)
float或double都可以完成这项任务。
float x = 2f / 4f;
double x = 2d / 4d;
请注意,您可以通过附加适当的字符(f或d)将常量值指定为float或double。
要记住的重要一点是,第一个数据类型(左侧)将确定结果的数据类型。 编辑:实际上,在这种情况下,任何一个浮动/双重值都可以正常工作
因此...
var x = 2 / 4;//x is int (0)
var x = 2f / 4;//x is float (0.5f)
var x 2d / 4;//x is double (0.5d)
C#会自动将int转换为float / double所以......
float x = 2 / 4;//result type is int, but gets stored as convert float
无论如何,希望有助于解释一些事情