zoukankan      html  css  js  c++  java
  • iOS

    前言

    	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)
    
  • 相关阅读:
    【dp】P1982 小朋友的数字
    NOIp2017囤题计划
    Java语言编写计算器(简单的计算器)
    关于建立Android工程R文件丢失的问题
    读《黑客与画家》
    格式化输出%、基本运算符
    常量、变量;基本数据类型;input()、if、while、break、continue
    初遇Linux
    MVC5+EF6 入门完整教程10 数据查询更新
    Razor语法和Razor引擎大全
  • 原文地址:https://www.cnblogs.com/QianChia/p/5777445.html
Copyright © 2011-2022 走看看