整数与浮点数的操作注意事项

本文介绍了在使用整数进行操作时应注意的问题,包括整数除法、整数溢出及中间结果溢出等问题,并给出了使用浮点数时应遵循的原则,如避免数量级相差巨大的数之间的加减运算、避免等量判断、处理舍入误差问题等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在用整数进行操作的时候,注意

1、检查整数除法

注意整数除法最后的结果是整数,即使中间结果也是。因此在计算的时候需要当心。如10*(7/10) = 0

2、检查整数溢出

在做整数乘法或者加法的时候,要留心能求出的最大整数,看是否大于该数据类型的最大值。

另外要考虑到程序的未来发展,如果整数在当前的环境下,不可能溢出;未来如果会的话也要注意。

3、检查中间结果的溢出

要小心,即使可能最后的结果没有溢出,但是计算的中间值却溢出了。

如:int a = 100000;int b = a*a/a;这个时候中间结果(a*a就溢出了)

 

 

使用浮点数应该遵循的指导原则:

1、避免数量级相差巨大的数之间的加减运算,如1000000.00+0.1=1000000.00。

如果必须这么做,那么就先对这些数进行排序,然后从最小值开始把他们加起来。同样,如果你需要对无穷数列进行求和,那么就从最小的值开始。

2、避免等量判断

因为计算机存储的浮点数并不精确,许多从数学上来看应该相等的浮点数未必相等。如10个0.1相加未必等于1.0。

一种可行的办法是先确定可以接受的误差范围,然后用布尔数值去判断是否接近。如Math.abs(a-b)<acceptedEstimate的话就判断为相等。

在java中,基本数据类型的封装类型都提供了compareTo()方法用来判断是否相等。

3、处理舍入误差问题

解决办法有:换用一种精度更高的类型

   采用BCD码(用4位二进制数来表示1位十进制数中的0~9这10个数码)

   把浮点变量变成整型变量,然后进行计算,这时候就要手动计算了。

4、检查语言和函数库对特定数据类型的支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值