我有一个double类型的变量,表示时间间隔(单位为秒)。有效值为0.0、0.5、1.0、1.5等。
现在我需要将这个值转换为int类型。但是我不能直接这样做:
int converted = (int)theDouble;
因为浮点数误差的原因,可能会出现我的双精度浮点数是0.999999999而不是1.000000000的情况。它只会截取尾数,最终得到的结果是0而不是1。此外,当我的双精度浮点数为0.9时,我希望得到一个整数1;当它为1.1时,我希望整数为1;当它为1.8时,我希望整数为2。
虽然有一个round()函数,但Xcode没有提供文档。头文件仅说明它返回一个双精度浮点数,所以这并不是我需要的。
最安全的方式是获取该双精度浮点数的近似整数表示。尽管它是双精度浮点数,但我永远不需要比0.5或一个小数位更高的精度(我不是数学天才,也不知道确切的科学术语)。