3

我正在用帕斯卡写一个任务。

一切都好,只是我的结果不对。

我在总结一些数字

示例:2.3 + 3.4+ 3.3 = 9

但输出显示:9.000000 + EEE 或类似的东西。

那么-如何转换,只有 9,而不是这个 REAL 变量。

4

4 回答 4

4

要实际转换:

var
  i: integer;
...
  i := round(floatVar);

只输出整数部分:

writeln(floatVar:9:0);
于 2013-06-05T16:33:27.517 回答
0

为了在屏幕上显示漂亮的输出,您可以使用以下内容:

Writeln(result:0:2);

屏幕上的结果是这样的:

9.00

这意味着有人会问吗?那么第一个数字 0 表示字段的宽度。如果你说它是 0,那么 Pascal 将它写在屏幕的最左侧。如果你说writeln(result:5:2)结果是:

   9.00

换句话说,我会从右侧打印并留下 5 个字符。

在本例中,第二个数字 2 表示您希望以 2 个小数位打印结果。仅当您想在屏幕上打印真实、单、双、扩展等值时才可以放置它。您可以四舍五入到任何小数位数,如果这样做,writeln(result:0:0)您将得到输出:

9

如果您正在打印整数并希望有一些长度的字段,让 sat 5 你会这样做:writeln(int:5). 如果你添加 :2到最后,你会得到编译时错误。

这一切也适用于这样的事情:writeln(5/3.5+sqrt(3):0:3)

您应该知道这不会对变量本身进行舍入,而只是格式化输出。这也是合法的:

program test;
var
    a:real;
    n,m:integer;
begin
    readln(a,m,n);
    writeln(a:m:n);
end.

我在这里所做的是我问用户是否要输入多少个小数以及他想要输入的字段长度是多少。这可能很有用,所以我指出来。感谢您的阅读。我希望我有所帮助

于 2017-09-19T13:21:42.050 回答
0

让我们考虑这个非常简单的方程:

3.5 + 2.5

你能指望什么?6, 正确的?让我们试试这段代码

write(3.5 + 2.5);

不幸的是,它是一个浮点数,所以它会产生一个以科学方式表示的数字:

6.00000000000E+00

或 6.0000000000 x 10 0或 6 x 10 o。不管怎样,你只关心6,谁需要这个奇怪的无用长数字?所以思路是把小数部分去掉,只输出整数部分到控制台,这行代码就可以做到:

write(3.5 + 2.5 : 0 : 0);

好的,现在它按预期输出了一个漂亮的数字

6

似乎问题解决了,但你说:

我在总结一些数字

示例:2.3 + 3.4+ 3.3 = 9

哦,这样均匀漂亮的整数就随机出现了?问题来了,你期望这个方程会如何输出?

3.6 + 2.5

应该是6.1吧?让我们用有效的代码行来试试:

write(3.6 + 2.5 : 0 : 0);

输出是...

6

没想到吧?那么如何舍入到一些小数位,比如1

write(3.5 + 2.5 : 0 : 1);
write(3.6 + 2.5 : 0 : 1);

然后,3.5 + 2.5 = 6.03.6 + 2.5 = 6.1。但是6.0可能看起来很长,那么如何让它输出6到 6.0 和6.16.1 呢?

实际上,你不能让程序自动检测一个实数变量是否包含一个整数值,因为一个实数变量的存储方式与一个整数变量完全不同(它们有多么不同,请联系谷歌;但你可以做到通过创建一个函数来手动完成这项工作)。

所以我的解决方案是,为了简单起见,将输出四舍五入到小数位,仅此而已。

于 2017-11-22T14:24:37.960 回答
-4

您可以转换为string,获取int部分,e 转换为int数字!

FloatStrStrInt

nPage := StrToInt(FloatToStr(Int(nReg / nTPages))) + 1;
于 2018-03-26T19:07:02.253 回答