如何在Swift中使用CFNumberFormatterRoundingMode

时间:2018-07-04 02:52:20

标签: swift

如何在Swift中使用CFNumberFormatterRoundingMode

CFNumberFormatterRoundingMode有很多case

  

kCFNumberFormatterRoundCeiling向正无穷大舍入。

     

kCFNumberFormatterRoundFloor向负无穷大舍入。

     

kCFNumberFormatterRoundDown朝零取整。

     

kCFNumberFormatterRoundUp从零开始舍入。

     

kCFNumberFormatterRoundHalfEven舍入到最接近的整数,或者   等距的话向偶数的方向移动。

     

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

     

kCFNumberFormatterRoundHalfUp舍入到最接近的整数,或者   等距则远离零。

我与Decimal一起进行了NSDecimalRound(_:_:_:_:)的计算。 NSDecimalRound(_:_:_:_:)仅具有NSDecimalNumber.RoundingMode的参数。 NSDecimalNumber.RoundingMode有几个case

  

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

     

小写向下舍入返回值。

     

向上舍入返回值。

     

案例银行家四舍五入到最接近的可能的返回值;当中途   在两个可能性之间,返回最后一位为   甚至。

我可以在Swift中使用CFNumberFormatterRoundingMode吗? 除了NSDecimalRound(_:_:_:_:)以外,还有其他选择吗?

链接

2 个答案:

答案 0 :(得分:1)

CFNumberFormatterRoundingModeCFNumberFormatter一起使用。

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

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

答案 1 :(得分:0)

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)