gpt4 book ai didi

ios - 将 `NSDecimalNumber` 转换为 `SInt64` 没有精度损失。 (在SInt64、iOS范围内)

转载 作者:行者123 更新时间:2023-11-28 17:48:05 24 4
gpt4 key购买 nike

目前,使用字符串 @"9999999999999999" 创建的 [NSDecimalNumber longLongValue] 返回 10000000000000000

这意味着该类首先将其值转换为double,然后重新转换为SInt64(signed long long)

如何规避这种行为?我想得到 SInt64 范围内的精确整数。

附言。我考虑过使用 NSScannerstrtoll 转换为 NSString 并重新转换为 SInt64,但我相信有更好的方法方式。但是,如果您确定没有其他方法,请告诉我。

最佳答案

首先:除非您确定它对性能至关重要,否则我会将其写入字符串并扫描回来。这是简单的方法。

现在,如果你真的想不这样做:

  1. 从你的 NSDecimalNumber 获取一个 NSDecimal
  2. 使用结构的私有(private)字段,从尾数初始化您的 long long 值(可能引入检查来处理太大的尾数)
  3. 乘以 10^指数;你可以使用 binary exponentiation 来做到这一点;再次检查是否溢出

关于ios - 将 `NSDecimalNumber` 转换为 `SInt64` 没有精度损失。 (在SInt64、iOS范围内),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4083595/

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