为什么float和double不能在控制台上打印?

时间:2015-04-16 11:43:57

标签: floating-point d

double x = 4/10;
writeln(x);

=> 0

为什么不打印分形部分(小数点后面的部分)?

double x = 4/10;
writeln(to!double(x));

=> 0

如何使用writeln double打印?

3 个答案:

答案 0 :(得分:4)

410的值为int。代码中发生的事情的顺序是:

  1. 4 10进行整数除法,得到0int)。

  2. 0 int转换为0 double

  3. 将其存储在x

  4. 输出x

  5. 要获得double除法,请使用:

    double x = 4.0 / 10;
    

    4.0double值,因此4.0 / 10会产生double结果。

答案 1 :(得分:3)

4/10是一个整数除法。在将结果截断为0之前,结果不会转换为double。

而是将.0添加到文字:

double x = 4.0/10.0;
writeln(x);

或在分割前将变量存储在双精度中:

double a = 4;
double b = 10;
double x = a/b;
writeln(x);

答案 2 :(得分:1)

4是一个整数字面值。 10是整数文字。因此,4/10是整数除法,它截断到最接近的整数。您现在将此整数分配给double的事实不会改变任何内容。

您需要使用双字面词:

double x = 4.0/10;