Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables Pascal-如何将实变量转换为整数变量_Variables_Pascal - Fatal编程技术网

Variables Pascal-如何将实变量转换为整数变量

Variables Pascal-如何将实变量转换为整数变量,variables,pascal,Variables,Pascal,我正在用帕斯卡写一个任务 一切都好,只是我的结果不对 我在给一些数字求和 示例:2.3+3.4+3.3=9 但输出显示:9.000000+EEE或类似的东西 所以-如何转换,只有9,而不是这个实变量 要实际转换: var i: integer; ... i := round(floatVar); 要仅输出整数部分,请执行以下操作: writeln(floatVar:9:0); 为了在屏幕上显示漂亮的输出,您可以使用如下内容: Writeln(result:0:2); 屏幕上的结果如

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

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

我在给一些数字求和

示例:2.3+3.4+3.3=9

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

所以-如何转换,只有9,而不是这个实变量

要实际转换:

var
  i: integer;
...
  i := round(floatVar);
要仅输出整数部分,请执行以下操作:

writeln(floatVar:9:0);

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

Writeln(result:0:2);
屏幕上的结果如下:

9.00
这意味着有人会问什么?第一个数字0表示区域有多宽。如果你说它是0,那么帕斯卡会把它写在屏幕的最左边。如果您说
writeln(结果:5:2)
结果将是:

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

第二个数字2,在本例中意味着您希望用2位小数打印结果。仅当您要在屏幕上打印实数、单数、双数、扩展数等值时,才可以放置它。您可以舍入到任意数量的小数,如果执行
writeln(结果: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.

我在这里所做的是询问用户是否需要输入数字a,输入的小数位数是多少,字段长度是多少。这可能很有用,所以我要指出。谢谢你的阅读。我希望我帮助

让我们考虑这个更简单的等式:

3.5 + 2.5
你期待什么<代码>6,对吗?让我们试试这个代码

write(3.5 + 2.5);
不幸的是,它是一个浮点数,所以它会产生一个以科学方式表示的数字:

6.00000000000E+00
或6.0000000000 x 100,或6 x 10o。不管怎样,你只关心6,谁需要这个奇怪的无用的长数字?因此,我们的想法是切断小数部分,只向控制台输出整数部分,这可以通过以下代码行完成:

write(3.5 + 2.5 : 0 : 0);
write(3.6 + 2.5 : 0 : 0);
好的,现在它输出了一个漂亮的数字

6
看起来问题解决了,但你说:

我在给一些数字求和

示例:2.3+3.4+3.3=9

哦,那么这个均匀美丽的整数就是随机出现的吗?问题来了,你认为这个等式会产生怎样的结果

3.6 + 2.5
它应该是
6.1
,对吗?让我们用工作代码行试试:

write(3.5 + 2.5 : 0 : 0);
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.0
3.6+2.5=6.1
。但是
6.0
可能看起来很长,那么如何让6.0的
6
和6.1的
6.1
输出呢

实际上,你不能让程序自动检测实数变量是否包含整数值,因为实数变量的存储方式与整型变量完全不同(它们有多大不同,请联系谷歌;但你可以通过创建函数来手动执行)


因此,我的解决方案是,简单地说,将输出四舍五入到一些小数位,就是这样。

您可以转换为
字符串
,获取
int
部分,e转换为
int
数字

Float
Str
Str
Int

nPage := StrToInt(FloatToStr(Int(nReg / nTPages))) + 1;

谢谢,但在第一部分-重复标识符。