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)
    
  • 相关阅读:
    dotnet 新项目格式与对应框架预定义的宏
    dotnet 线程静态字段
    dotnet 线程静态字段
    dotnet 通过 WMI 拿到显卡信息
    dotnet 通过 WMI 拿到显卡信息
    dotnet 通过 WMI 获取指定进程的输入命令行
    dotnet 通过 WMI 获取指定进程的输入命令行
    dotnet 通过 WMI 获取系统信息
    dotnet 通过 WMI 获取系统信息
    PHP show_source() 函数
  • 原文地址:https://www.cnblogs.com/QianChia/p/5777445.html
Copyright © 2011-2022 走看看