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

Floating point 为什么float和double不在控制台上打印?,floating-point,d,Floating Point,D,=>0 为什么不打印分形部分(小数点后的部分) =>0 如何使用writeln double打印?4/10是一个整数除法。在将结果截断为0之前,不会将其转换为double 而是将.0添加到文本: double x = 4/10; writeln(to!double(x)); 或在除法前将变量存储为双精度: double x = 4.0/10.0; writeln(x); 4是一个整数文本10是一个整数文本。因此,4/10是整数除法,它向下截断到最接近的整数。现在将此整数指定给一个双精度不会改

=>0

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

=>0


如何使用writeln double打印?

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

而是将
.0
添加到文本:

double x = 4/10;
writeln(to!double(x));
或在除法前将变量存储为双精度:

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

4
是一个整数文本
10
是一个整数文本。因此,
4/10
是整数除法,它向下截断到最接近的整数。现在将此整数指定给一个
双精度
不会改变任何事情

您需要使用双文本:

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

4
10
int
值。代码中发生事情的顺序是:

  • 4
    除以
    10
    ,得到
    0
    int

  • 0
    int
    转换为
    0
    double

  • 将其存储在
    x

  • 输出
    x

  • 要获得双除法,请使用:

    double x = 4.0/10;
    

    4.0
    是一个
    double
    值,因此
    4.0/10
    产生一个
    double
    结果。

    可能是因为
    4/10
    被视为整数,结果是0I,就像Pascal
    div
    ,虽然比符号更详细,但它避免了混淆。
    double x = 4.0/10;
    
    double x = 4.0 / 10;