在两个整数值相除时如果需要以实数的形式存储结果, 为什么编译器没有输出任何警告?

描述:
在S7-SCL中进行以下指令编程:

Quotient := Dividend / Divisor;

此处商为实数值而被除数和除数是整数值。

编译器没有输出警告。可是,比如说程序运行后商中是 0 而不是1/3。指令“Quotient := Dividend / Divisor”在S7-SCL中由编译器按如下进行编译:

Quotient := INT_TO_REAL(Dividend / Divisor);

随之而来的是,结果中不会出现小数位,因为整数首先被除,然后格式才被转换。

补救措施:
如果先将整数转换为实数再执行除法,就会得到预期的结果:

Quotient:= INT_TO_REAL(Dividend)/(INT_TO_REAL(Divisor)

实例:
在两个整数值相除时如果需要以实数的形式存储结果, 为什么编译器没有输出任何警告?
图01

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc339399.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论