double x = 4/10;
writeln(x);
=> 0
为什么不打印分形部分(小数点后面的部分)?
double x = 4/10;
writeln(to!double(x));
=> 0
如何使用writeln double打印?
答案 0 :(得分:4)
4
和10
的值为int
。代码中发生的事情的顺序是:
按4
10
进行整数除法,得到0
(int
)。
将0
int
转换为0
double
。
将其存储在x
输出x
要获得double
除法,请使用:
double x = 4.0 / 10;
4.0
是double
值,因此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;