r:=2.1;
while r <> 4.3 do
begin
r:= r + 0.1;
writeln(r);
end;
r是真实类型,但它不起作用,并在科学通知中打印'r'。
我不知道,也许这是编译器舍入错误或类似的东西 我是pascal的初学者(实际上被迫与它合作,我真诚地讨厌)
输出是
Ideone链接: http://ideone.com/fY5AYM
答案 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
但是,它仍然不是一个真正的解决方案
我想我无法用编译器做什么