ios - 如何获取NSDecimal舍入到最接近的整数值?

标签 ios objective-c nsdecimal

我使用NSDecimal是因为我必须为应用程序存储非常大的值。我希望能够使用NSDecimalDivide函数将两个NSDecimals相除并将结果四舍五入到最接近的整数。

    NSDecimal testOne = [[NSDecimalNumber decimalNumberWithString:@"1064"] decimalValue];
    NSDecimal cost = [[NSDecimalNumber    decimalNumberWithString:@"10"]decimalValue];
    NSDecimal value;
    NSDecimalDivide(&value, &testOne, &cost, NSRoundDown);
    NSString *string = NSDecimalString(&value, _usLocale);
    NSLog(@"Here is the cost%@",string);

这个输出为106.4,我希望它输出为106。有人知道如何将NSDecimal数舍入为整数值吗?

最佳答案

一种可行的方法是使用NSDecimalNumberHandler并将scale设置为0

NSDecimalNumber *number1 = [NSDecimalNumber decimalNumberWithString:@"1064"];
NSDecimalNumber *number2 = [NSDecimalNumber decimalNumberWithString:@"10"];

NSDecimalNumberHandler *behavior = [[NSDecimalNumberHandler alloc] initWithRoundingMode:NSRoundDown
                                                                                  scale:0
                                                                       raiseOnExactness:NO
                                                                        raiseOnOverflow:NO
                                                                       raiseOnUnderflow:NO
                                                                    raiseOnDivideByZero:YES];

NSDecimalNumber *result = [number1 decimalNumberByDividingBy:number2 withBehavior:behavior];

NSLog(@"Here is the cost %@", result);

请注意,我根本没有使用原始的NSDecimal,并且我还是会建议您。

但是,如果要直接使用NSDecimal,可以使用方便的NSDecimalRound函数。

关于ios - 如何获取NSDecimal舍入到最接近的整数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36225894/

相关文章:

ios - 什么时候使用 NSDecimal、NSDecimalNumber 而不是 double 更好?

ios - 如何从 Firestore 获取数据?

javascript - 如何在 Android/iOS 上的 webview/移动浏览器中最好地预缓存视频?

ios - 为获取请求设置谓词

ios - 无法使用 Apple 的新旧金山字体。我收到以下错误 "attempt to insert nil object from objects[0]"

iphone - UITableView - 扩展单元格

ios - NSDecimal 等于 NSDecimalNumber 值?

ios - 在事务中调用当点击 UI 搜索栏并显示键盘时

ios - 类级别变量设置为什么总是为零?