Objective c 将NSNumber四舍五入到特定的有效位数
假设我有一个Objective c 将NSNumber四舍五入到特定的有效位数,objective-c,nsnumber,Objective C,Nsnumber,假设我有一个NSNumber对象,它保存一个值0.12345。我想要的是一个具有相同值的NSNumber对象,但四舍五入到指定的有效位数,比如2,所以值看起来像这样:0.12 我不想将其转换为NSString并返回,这是一些 我不希望手动进行强制转换和/或乘法/除法 有没有一种明显的方法是我没有的?要做到这一点并保持所有的约束条件几乎是不可能的NSNumber没有舍入方法,因此您必须转换为其他方法。最明显的方法是转换成双精度和乘法,四舍五入和除法,但是你说你不愿意这样做。这就剩下这条路线了:
NSNumber
对象,它保存一个值0.12345
。我想要的是一个具有相同值的NSNumber
对象,但四舍五入到指定的有效位数,比如2,所以值看起来像这样:0.12
- 我不想将其转换为
并返回,这是一些NSString
- 我不希望手动进行强制转换和/或乘法/除法
有没有一种明显的方法是我没有的?要做到这一点并保持所有的约束条件几乎是不可能的
NSNumber
没有舍入方法,因此您必须转换为其他方法。最明显的方法是转换成双精度和乘法,四舍五入和除法,但是你说你不愿意这样做。这就剩下这条路线了:
NSNumber *round(NSNumber *number, NSInteger places, NSRoundingMode mode) {
NSDecimal d = number.decimalValue;
NSDecimal rd;
NSDecimalRound(&rd, &d, places, mode);
return [NSDecimalNumber decimalNumberWithDecimal:rd];
}
另一种黑客方式是:
我本人并不喜欢这种方法,但它符合您的要求D
NSNumber
没有任何内置的舍入功能。你可以使用NSDecimalNumber
,这样做。再解释一下你的目标。你为什么需要对NSNumber进行四舍五入?“我不想……”解释你为什么不想用数学解决数学问题。在你的链接问题中有很多答案,从坏到好(分数会有帮助)。这是最接近我的想法,谢谢