【问题标题】:How to use CFNumberFormatterRoundingMode in Swift如何在 Swift 中使用 CFNumberFormatterRoundingMode
【发布时间】:2018-12-12 09:23:42
【问题描述】:

如何在 Swift 中使用CFNumberFormatterRoundingMode

CFNumberFormatterRoundingMode 有很多case

kCFNumberFormatterRoundCeiling 向正无穷大舍入。

kCFNumberFormatterRoundFloor 向负无穷大舍入。

kCFNumberFormatterRoundDown 向零舍入。

kCFNumberFormatterRoundUp 从零开始舍入。

kCFNumberFormatterRoundHalfEven 向最接近的整数舍入,或 如果等距,则趋向偶数。

kCFNumberFormatterRoundHalfDown 向最接近的整数舍入,或 如果等距,则趋近于零。

kCFNumberFormatterRoundHalfUp 向最接近的整数舍入,或 如果等距,则远离零。

我在DecimalNSDecimalRound(_:_:_:_:) 之间进行计算。 NSDecimalRound(_:_:_:_:) 只有NSDecimalNumber.RoundingMode 的参数。 NSDecimalNumber.RoundingMode 有几个case

case plain 四舍五入到最接近的可能返回值;被抓到的时候 在两个正数之间,向上取整;当夹在中间 两个负数,向下取整。

case down 向下舍入返回值。

case up 向上取整返回值。

case bankers 四舍五入到最接近的可能返回值;当中途 在两种可能性之间,返回最后一位为的可能性 甚至。

我可以在 Swift 中使用 CFNumberFormatterRoundingMode 吗? NSDecimalRound(_:_:_:_:) 有什么替代品吗?

链接

【问题讨论】:

    标签: swift


    【解决方案1】:
    import Foundation
    
    let f = NumberFormatter()
    f.numberStyle = .decimal
    f.maximumFractionDigits = 2
    f.roundingMode = .down
    
    f.string(from: Decimal(0.111) as NSNumber)
    f.string(from: Decimal(-0.111) as NSNumber)
    
    f.string(from: Decimal(0.116) as NSNumber)
    f.string(from: Decimal(-0.116) as NSNumber)
    

    【讨论】:

      【解决方案2】:

      CFNumberFormatterRoundingMode 应与CFNumberFormatter 一起使用。

      使用NumberFormatter并设置其roundingMode属性会更方便,具有相同的选项。

      您使用数字格式化程序使用特定的numberStyle(如小数、货币、百分比等)将数字转换为字符串(或反之亦然)。

      【讨论】:

        猜你喜欢
        • 2016-05-26
        • 2015-09-21
        • 2021-04-05
        • 2014-09-18
        • 2017-08-05
        • 2014-10-26
        • 2021-05-15
        • 2014-10-27
        • 2021-12-20
        相关资源
        最近更新 更多