基本的pascal浮点类型(实际)增量似乎无法正常工作

时间:2015-01-09 12:12:22

标签: loops floating-point pascal

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

r是真实类型,但它不起作用,并在科学通知中打印'r'。

我不知道,也许这是编译器舍入错误或类似的东西 我是pascal的初学者(实际上被迫与它合作,我真诚地讨厌)

输出是 enter image description here

Ideone链接: http://ideone.com/fY5AYM

2 个答案:

答案 0 :(得分:2)

如果你想在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

答案 1 :(得分:1)

我通过替换

修复了它
while r <> 4.3

while r < 4.4

但是,它仍然不是一个真正的解决方案

我想我无法用编译器做什么