我有一个双倍的时间间隔,以秒为单位。有效值为0.0,0.5,1.0,1.5等。如何安全地将这个double转换为int?
现在我需要将此值转换为int。但我不能这样做:
int converted = (int)theDouble;
因为什么可能发生的是,我的双由于浮点错误是0.999999999,而不是1.000000000。它只会切断尾部,我们最终会得到0而不是1.另外,当我的double是0.9时,我想要一个1的整数。当它是1.1时,我希望int为1。它是1.8,我想INT是2.
有一个round()函数,但Xcode不显示此文档。标题只会告诉它返回一个double。所以不是我需要的。
什么是最安全的方式来获得该double的close int表示?虽然它是双倍数,我永远也不需要比0.5或者一个零碎的数字更高的精度(我不是数学天才,也不知道确切的科学术语)。在math.h
int converted = (int)(round(theDouble));