C# - 值为0.5的数据类型

时间:2011-07-21 10:40:38

标签: c# types

我有一个计算例如2/4 = 0.5,除了我找不到存储该值的数据类型!每次我进行计算时都会显示0。

有人有任何建议吗?

5 个答案:

答案 0 :(得分:12)

doubledecimal都可以正常使用。

但是,如果你只是写:

// 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;

请注意,doubledecimal都是浮点类型。它们不代表任意有理数(分数)。例如,两者都不能准确地代表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

无论如何,希望有助于解释一些事情