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)
iOS - Swift NSNumber 数字的更多相关文章
- iOS - OC NSNumber 数字
前言 @interface NSNumber : NSValue @interface NSDecimalNumber : NSNumber 将基本数据类型包装成 OC 对象 1.NSNumber 与 ...
- iOS Swift WisdomKeyboardKing 键盘智能管家SDK
iOS Swift WisdomKeyboardKing 键盘智能管家SDK [1]前言: 今天给大家推荐个好用的开源框架:WisdomKeyboardKing,方面iOS日常开发,优点和功能请 ...
- iOS swift的xcworkspace多项目管理(架构思想)
iOS swift的xcworkspace多项目管理(架构思想) 技术说明: 今天在这里分享 swift下的 xcworkspace多项目管理(架构思想),能为我们在开发中带来哪些便捷?能为我们对整 ...
- iOS Swift 模块练习/swift基础学习
SWIFT项目练习 SWIFT项目练习2 iOS Swift基础知识代码 推荐:Swift学习使用知识代码软件 0.swift中的宏定义(使用方法代替宏) 一.视图 +控件 1.UIImag ...
- ios swift 实现饼状图进度条,swift环形进度条
ios swift 实现饼状图进度条 // // ProgressControl.swift // L02MyProgressControl // // Created by plter on 7/2 ...
- Building gRPC Client iOS Swift Note Taking App
gRPC is an universal remote procedure call framework developed by Google that has been gaining inter ...
- iOS Swift WisdomScanKit图片浏览器功能SDK
iOS Swift WisdomScanKit图片浏览器功能SDK使用 一:简介 WisdomScanKit 由 Swift4.2版编写,完全兼容OC项目调用. WisdomScanKit的 ...
- iOS Swift WisdomScanKit二维码扫码SDK,自定义全屏拍照SDK,系统相册图片浏览,编辑SDK
iOS Swift WisdomScanKit 是一款强大的集二维码扫码,自定义全屏拍照,系统相册图片编辑多选和系统相册图片浏览功能于一身的 Framework SDK [1]前言: 今天给大家 ...
- iOS Swift WisdomHUD 提示界面框架
iOS Swift WisdomHUD 提示界面框架 Framework Use profile(应用简介) 一:WisdomHUD简介 今天给大家介绍一款iOS的界面显示器:WisdomHUD,W ...
随机推荐
- linux系统修改CST时区
================================================= [root@tzyyserveryg ~]# date -R Fri, 28 Nov 2014 08 ...
- linux中Iptables限制同一IP连接数防CC/DDOS攻击方法
1.限制与80端口连接的IP最大连接数为10,可自定义修改. 代码如下 复制代码 iptables -I INPUT -p tcp --dport 80 -m connlimit --connlim ...
- 快速稳定的维护PHP
Just to recap, previously we'd have this sort of thing: namespace me\adamcameron\testApp; use Guzzle ...
- Volley Get Post 方法
Get String url = CommonInterfaceUrl.COMM_GetWorksDetailUrl + "/" + worksID; RequestQueue m ...
- HDU 2222:Keywords Search(AC自动机模板)
http://acm.hdu.edu.cn/showproblem.php?pid=2222 KMP是单模式串匹配的算法,而AC自动机是用于多模式串匹配的算法.主要由Trie和KMP的思想构成. 题意 ...
- UVA 12950 : Even Obsession(最短路Dijkstra)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 给我发邮件(qq)| 和我联系
qq邮箱开放平台(只能是qq对qq): 简单点的发邮件: 和我联系
- ACM题目————中缀表达式转后缀
题目描述 我们熟悉的表达式如a+b.a+b*(c+d)等都属于中缀表达式.中缀表达式就是(对于双目运算符来说)操作符在两个操作数中间:num1 operand num2.同理,后缀表达式就是操作符在两 ...
- css 前景色与背景色
前景色:color:#990000; 背景色:background-color:red; 可以用来设置文字的前景色与背景色 <!-- 作者:纤锐出处:http://www.cnblogs.com ...
- 【20160924】GOCVHelper MFC增强算法(3)
//获得当前目录路径 static CString GetLocalPath(){ CString csCfgFilePath; GetModuleFi ...