gpt4 book ai didi

objective-c - 如何安全地将此 double 转换为 int?

转载 作者:太空狗 更新时间:2023-10-30 03:46:49 25 4
gpt4 key购买 nike

我有一个 double 值,它是以秒为单位的时间间隔。有效值为 0.0、0.5、1.0、1.5 等。

现在我需要将这个值转换成一个整数。但我不能这样做:

int converted = (int)theDouble;

因为可能发生的情况是,由于浮点错误,我的 double 是 0.999999999 而不是 1.000000000。它只会切断尾部,我们最终会得到 0 而不是 1。另外,当我的 double 是 0.9 时,我想要一个 1 的 int。当它是 1.1 时,我希望 int 是 1。当它是 1.8,我希望 int 是 2。

有一个 round() 函数,但 Xcode 没有显示这方面的文档。标题只告诉它返回一个 double 值。所以不是我需要的。

获得该 double 的接近 int 表示的最安全方法是什么?尽管它是 double ,但我永远不需要比 0.5 或一个小数位更高的精度(我不是数学天才,也不知道确切的科学术语)。

最佳答案

您可能正在寻找 lround(双函数)。签名看起来像这样。

long int lround(double)

其他选项是

  • long int lrint(double)
  • long long int llrint(double)
  • long long int llround(double)

关于objective-c - 如何安全地将此 double 转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4878539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com