objective-c - 四舍五入 NSDecimalNumber

标签 objective-c cocoa rounding

我很难找出看起来应该非常简单的东西。我需要将 NSDecimalNumber 精确舍入到特定的小数位数(在运行时确定)。据我所知,我有两个选项,但我都不喜欢。

  1. 转换为 float ,并使用 C 舍入函数:我不喜欢这样,因为在这种情况下准确性很重要。 float 不能总是准确地表示十进制数,这可能会导致问题。
  2. 使用 NSNumberFormatter 转换为字符串,然后再转换回来:我不喜欢这个,因为它看起来丑陋且效率低下。

还有其他我错过的方法吗? 必须有一个简单的方法来对 NSDecimalNumbers 进行舍入,但我似乎无法弄清楚它是什么。

最佳答案

您只需使用所需的 NSDecimalNumberBehaviors 协议(protocol)调用 decimalNumberByRoundingAccordingToBehavior:。请参阅 dev docs 中的 NSDecimalNumberBehaviors 引用.

更新:参见 http://www.cimgf.com/2008/04/23/cocoa-tutorial-dont-be-lazy-with-nsdecimalnumber-like-me/

关于objective-c - 四舍五入 NSDecimalNumber,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3981219/

相关文章:

iphone - 如果您在运行时将 nil 传递给不应接受的参数会发生什么?

ios - 共享扩展程序未出现在能够在 iPhone 上共享照片的应用程序列表中

objective-c - OpenGL 与 Cocoa : No matching function call when trying to call CGLLockContext([[self openGLContext] CGLContextObj]);

cocoa - NSDictionaryController 似乎没有观察到内容字典的更改

java - 小数点问题

ios - 将 float 四舍五入为下一个整数 0.5

objective-c - 播放音频 iOS Objective-C

iphone - 如何删除 UITextView 中的所有按钮?

cocoa - NSNumberFormatter 通过 StoryBoard - Xcode 9

c# - 在使用 C# 二次方程求解器时遇到问题