iOS - Swift NSNumber 數字


前言

	public class NSNumber : NSValue
	public class NSDecimalNumber : NSNumber
  • NSNumber 可以被賦值為各種數值類型。我們可以將一個 Int 類型的值直接傳遞給一個需要 NSNumber 類型參數或變量,Swift 會自動轉換,如果兩者類型不一致,會強制類型轉換。

  • 從 NSNumber 賦值給 Swift 數值類型是,數值類型會根據會更具聲明類型將 NSNumber 強制轉換。

1、Swift 數字類型 與 NSNumber 類型 的相互轉換

	// Swift 數字 轉 NSNumber
	    
		let nsNum1:NSNumber = 1
		    
		let nsNum2 = NSNumber(integer: 1)
		let nsNum3 = NSNumber(unsignedInteger: 1)
		let nsNum4 = NSNumber(float: 1.1)
		let nsNum5 = NSNumber(double: 3.2)
		let nsNum6 = NSNumber(bool: true)
			
	// NSNumber 轉 Swift 數字
	    
		let num1 = nsNum1.integerValue
		let num2 = nsNum2.unsignedIntegerValue
		let num3 = nsNum3.floatValue
		let num4 = nsNum4.doubleValue
		let num5 = nsNum5.boolValue

2、比較兩個 NSNumber 類型數據的大小

	let nsNum1:NSNumber = 10
	let nsNum2:NSNumber = 10.1
	    
	// 判斷兩個值是否相等
	let bl:Bool = nsNum1.isEqualToNumber(nsNum2)
	
	// 判斷兩個值的大小
	let result:NSComparisonResult = nsNum1.compare(nsNum2)

3、NSNumber 與 String 的相互轉換

	// NSNumber 轉換 NSString
	let str:String = NSNumber(float: 10.456).stringValue
	   	
	// NSString 轉 NSNumber
	let nsNum:NSNumber = NSNumber(float: NSString(string: str).floatValue)

4、加、減、乘、除、n次方

	let dcNun1 = NSDecimalNumber(string:"15.99")
	let dcNun2 = NSDecimalNumber(string:"29.99")
	let dcNun3 = NSDecimalNumber(string:"5.00")
	let dcNun4 = NSDecimalNumber(string:".90")
	let dcNun5 = NSDecimalNumber(string:"2.0")
	    
	// 加     Adding
	let subtotal = dcNun1.decimalNumberByAdding(dcNun2)                         
	    
	// 減     Subtracting
	let afterCoupon = subtotal.decimalNumberBySubtracting(dcNun3)               
	    
	// 乘     Multiplying
	let afterDiscount = afterCoupon.decimalNumberByMultiplyingBy(dcNun4)        
	    
	// 平均   Dividing
	let average = afterDiscount.decimalNumberByDividingBy(dcNun5)               
	    
	// n 次方 RaisingToPower
	let averageSquared = average.decimalNumberByRaisingToPower(2)               

5、四舍五入 運算

	/*
		enum NSRoundingMode : UInt {
		
			case RoundPlain     // Round up on a tie  貌似取整
			case RoundDown      // Always down == truncate  只舍不入
			case RoundUp        // Always up  只入不舍
			case RoundBankers   // on a tie round so last digit is even  貌似四舍五入
		}
	*/
	    
	// 90.7049 + 0.22 然后四舍五入
	    
	let roundUp = NSDecimalNumberHandler(roundingMode: NSRoundingMode.RoundBankers, 
	                                            scale: 2, 
	                                 raiseOnExactness: false, 
	                                  raiseOnOverflow: false, 
	                                 raiseOnUnderflow: false, 
	                              raiseOnDivideByZero: true)
	    
	let subtotal = NSDecimalNumber(string:"90.7049")
	let discount = NSDecimalNumber(string:"0.22")
	    
	// 加 保留 2 位小數
	let total = subtotal.decimalNumberByAdding(discount, withBehavior: roundUp)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM