domingo 发表于 2024-10-24 07:49:08

【火山避坑指南】整数相除会丢失精度,不返回小数部分。


一、常见的整数除法计算

问:1除以5等于几?

答:0.2

以上的除法运算的结果,相信上接受过九年义务教育的朋友,都知道正确答案是0.2;现在根据以上问题,用代码来实现:


1、易语言



2、火山


我们可以发现易语言成功返回了我们的理想结果;而火山却丢失了精度,仅返回了整数部分的结果。

从易语言转火山过来的我,首次碰到这个整数除法问题,着实有点懵;经过查询,有位朋友是这么给出回复的:

大多数语言. 两个整数的话就是用整数进行计算.速度才快. 也不会出现精度问题
火山的就是VC编译的. 自然也继承下来了. 我们在C++写的时候需要用小数了.. 也是要写成 4/5.0
像易语言那样转 全转双精度小数. 计算才有问题.. 经常出现精度问题. 让很多人都头疼.. 算式不敢写一成一排..得一排计算一次存到变量一次.. 不然结果容易有问题的...


二、解决办法

在火山里,立即数表达式计算过程中会出现数值精度丢失的现象(其实在我们编译的时候也会有警告提醒的),这是正常的,要声明一下小数,或者其中一个是小数。




二、总结

从易转火山的朋友,在进行除法计算的时候,要注意这个精度丢失问题;否则你的计算结果可能和你预想的就有点远哦。







揰掵佲 发表于 2024-10-24 09:39:02

易语言的算数运算 是把数据 先转换成 双精度小数所以 不需要我们自己强制转换类型
火山的自由度更高,需要我们自己强转类型了

哈吉米 发表于 2024-10-24 17:38:54

{:3_41:}
页: [1]
查看完整版本: 【火山避坑指南】整数相除会丢失精度,不返回小数部分。