前言

	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)

iOS - Swift NSNumber 数字的更多相关文章

  1. iOS - OC NSNumber 数字

    前言 @interface NSNumber : NSValue @interface NSDecimalNumber : NSNumber 将基本数据类型包装成 OC 对象 1.NSNumber 与 ...

  2. iOS Swift WisdomKeyboardKing 键盘智能管家SDK

    iOS Swift WisdomKeyboardKing 键盘智能管家SDK [1]前言:    今天给大家推荐个好用的开源框架:WisdomKeyboardKing,方面iOS日常开发,优点和功能请 ...

  3. iOS swift的xcworkspace多项目管理(架构思想)

    iOS  swift的xcworkspace多项目管理(架构思想) 技术说明: 今天在这里分享 swift下的 xcworkspace多项目管理(架构思想),能为我们在开发中带来哪些便捷?能为我们对整 ...

  4. iOS Swift 模块练习/swift基础学习

    SWIFT项目练习     SWIFT项目练习2 iOS Swift基础知识代码 推荐:Swift学习使用知识代码软件 0.swift中的宏定义(使用方法代替宏) 一.视图  +控件 1.UIImag ...

  5. ios swift 实现饼状图进度条,swift环形进度条

    ios swift 实现饼状图进度条 // // ProgressControl.swift // L02MyProgressControl // // Created by plter on 7/2 ...

  6. Building gRPC Client iOS Swift Note Taking App

    gRPC is an universal remote procedure call framework developed by Google that has been gaining inter ...

  7. iOS Swift WisdomScanKit图片浏览器功能SDK

    iOS Swift WisdomScanKit图片浏览器功能SDK使用 一:简介      WisdomScanKit 由 Swift4.2版编写,完全兼容OC项目调用. WisdomScanKit的 ...

  8. iOS Swift WisdomScanKit二维码扫码SDK,自定义全屏拍照SDK,系统相册图片浏览,编辑SDK

    iOS Swift WisdomScanKit 是一款强大的集二维码扫码,自定义全屏拍照,系统相册图片编辑多选和系统相册图片浏览功能于一身的 Framework SDK [1]前言:    今天给大家 ...

  9. iOS Swift WisdomHUD 提示界面框架

    iOS Swift WisdomHUD 提示界面框架  Framework Use profile(应用简介) 一:WisdomHUD简介 今天给大家介绍一款iOS的界面显示器:WisdomHUD,W ...

随机推荐

  1. Memcached 分布式缓存实现原理

    摘要 在高并发环境下,大量的读.写请求涌向数据库,此时磁盘IO将成为瓶颈,从而导致过高的响应延迟,因此缓存应运而生.无论是单机缓存还是分布式缓存都有其适应场景和优缺点,当今存在的缓存产品也是数不胜数, ...

  2. Zero_qiqi DIV模式的省市区三级联动

    1].[代码] [HTML]代码 跳至 [1] [2] [3] [4] [5] [6] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...

  3. hdu1016 Prime Ring Problem

    dfs,用全局数组和变量保存并更新当前状态. 答案可以直接在搜索结束时打印,n为奇数时方案数为0. acm.hdu.edu.cn/showproblem.php?pid=1016 #include & ...

  4. U3D UGUI学习4 - Text

    1.对应NGUI的四种文字显示模式 Shrink Content 对应NGUI第一种模式     勾选Best Fit 但似乎有一个Bug,文字过多的时候会爆框.解决方法是改变Line Spacing ...

  5. EasyUI的DataGrid 打印导出

    EasyUI的DataGrid 打印导出   一直在Winform和WPF的项目,偶尔接触Web都是网上下个模板修修改改就成了,学习的不太深入. 今日遇到一个打印导出datagrid的问题,做桌面项目 ...

  6. Tomcate配置单向双向SSL

    1.单向SSL 一.在Tomcate的service.xml文件中放开SSL配置 <!-- <Connector port="8443" protocol=" ...

  7. iis 500 解决方法

    1 打开运行,输入cmd进入到命令提示符窗口. 2 进入到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 目录. 3 输入aspnet_regiis.exe ...

  8. ActiveMQ点对点的消息发送案例

    公司最近会用MQ对某些业务进行处理,所以,这次我下载了apache-activemq-5.12.0-bin把玩下. 基于练习方便需要,使用Windows的版本. 参考的优秀文章: activemq的几 ...

  9. C语言中的++和--

    这个问题是老生常谈的问题了,虽然诸多大牛都深恶痛绝的告诉所有人不要那样写,但这永远挡不住学校的老师和考试. 今天我们来辨析一下这个东西. 首先我们来名词辨析一下吧: ++i 这个叫   前自增 i++ ...

  10. Xcode 创建.a和framework静态库

    库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. iOS中的静态库有 .a 和 .framework两种形式:动态库有.dylib 和 .framew ...