Basic pascal floating-point 类型(真实)增量似乎无法正常工作

Basic pascal floating-point type (real) incrementation seems to not work properly

r:=2.1;
while r <> 4.3 do
begin
    r:= r + 0.1;
    writeln(r);
end;

其中 r 是实型,但它不会工作并在科学通知中打印“r”。

我不知道,也许这是编译器舍入错误或类似的问题 我是 Pascal 的初学者(实际上被迫使用它,我真的很讨厌)

输出是

艾德奥内link: http://ideone.com/fY5AYM

我通过替换

修复了它
while r <> 4.3

while r < 4.4

但仍然不是真正的解决方案

我想我对编译器无能为力

如果你想在 Pascal 中有精确的小数,你必须使用 currency 类型。

program Zadanie2;
var r : currency;
begin
    r:=2.1;
    while r <> 4.3 do
    begin
        r:= r + 0.1;
        writeln(r:0:2);
    end;
end.

现在输出结束于 4.30

如您所见,我还更改了格式,因此您看不到科学记数法。

代码和结果: http://ideone.com/Hf65v2