前言

  1. public class NSNumber : NSValue
  2. public class NSDecimalNumber : NSNumber
  • NSNumber 可以被赋值为各种数值类型。我们可以将一个 Int 类型的值直接传递给一个需要 NSNumber 类型参数或变量,Swift 会自动转换,如果两者类型不一致,会强制类型转换。

  • 从 NSNumber 赋值给 Swift 数值类型是,数值类型会根据会更具声明类型将 NSNumber 强制转换。

1、Swift 数字类型 与 NSNumber 类型 的相互转换

  1. // Swift 数字 转 NSNumber
  2. let nsNum1:NSNumber = 1
  3. let nsNum2 = NSNumber(integer: 1)
  4. let nsNum3 = NSNumber(unsignedInteger: 1)
  5. let nsNum4 = NSNumber(float: 1.1)
  6. let nsNum5 = NSNumber(double: 3.2)
  7. let nsNum6 = NSNumber(bool: true)
  8. // NSNumber 转 Swift 数字
  9. let num1 = nsNum1.integerValue
  10. let num2 = nsNum2.unsignedIntegerValue
  11. let num3 = nsNum3.floatValue
  12. let num4 = nsNum4.doubleValue
  13. let num5 = nsNum5.boolValue

2、比较两个 NSNumber 类型数据的大小

  1. let nsNum1:NSNumber = 10
  2. let nsNum2:NSNumber = 10.1
  3. // 判断两个值是否相等
  4. let bl:Bool = nsNum1.isEqualToNumber(nsNum2)
  5. // 判断两个值的大小
  6. let result:NSComparisonResult = nsNum1.compare(nsNum2)

3、NSNumber 与 String 的相互转换

  1. // NSNumber 转换 NSString
  2. let str:String = NSNumber(float: 10.456).stringValue
  3. // NSString 转 NSNumber
  4. let nsNum:NSNumber = NSNumber(float: NSString(string: str).floatValue)

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

  1. let dcNun1 = NSDecimalNumber(string:"15.99")
  2. let dcNun2 = NSDecimalNumber(string:"29.99")
  3. let dcNun3 = NSDecimalNumber(string:"5.00")
  4. let dcNun4 = NSDecimalNumber(string:".90")
  5. let dcNun5 = NSDecimalNumber(string:"2.0")
  6. // 加 Adding
  7. let subtotal = dcNun1.decimalNumberByAdding(dcNun2)
  8. // 减 Subtracting
  9. let afterCoupon = subtotal.decimalNumberBySubtracting(dcNun3)
  10. // 乘 Multiplying
  11. let afterDiscount = afterCoupon.decimalNumberByMultiplyingBy(dcNun4)
  12. // 平均 Dividing
  13. let average = afterDiscount.decimalNumberByDividingBy(dcNun5)
  14. // n 次方 RaisingToPower
  15. let averageSquared = average.decimalNumberByRaisingToPower(2)

5、四舍五入 运算

  1. /*
  2. enum NSRoundingMode : UInt {
  3. case RoundPlain // Round up on a tie 貌似取整
  4. case RoundDown // Always down == truncate 只舍不入
  5. case RoundUp // Always up 只入不舍
  6. case RoundBankers // on a tie round so last digit is even 貌似四舍五入
  7. }
  8. */
  9. // 90.7049 + 0.22 然后四舍五入
  10. let roundUp = NSDecimalNumberHandler(roundingMode: NSRoundingMode.RoundBankers,
  11. scale: 2,
  12. raiseOnExactness: false,
  13. raiseOnOverflow: false,
  14. raiseOnUnderflow: false,
  15. raiseOnDivideByZero: true)
  16. let subtotal = NSDecimalNumber(string:"90.7049")
  17. let discount = NSDecimalNumber(string:"0.22")
  18. // 加 保留 2 位小数
  19. 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. php单链表实现的代码

    <?php/*** 单链表*/ class Demo{private $id;public $name;public $next;public function __construct ($id ...

  2. GCD 多线程 初探

    GCD编程的核心就是dispatch队列,dispatch block的执行最终都会放进某个队列中去进行,它类似NSOperationQueue但更复杂也更强大,并且可以嵌套使用.所以说,结合bloc ...

  3. 通达OA 同步中控考勤机 增强版

    如果你用的是中控考勤机且考勤机能联网,那恭喜有福了! 最近发现考勤机提供web方式查询,经过调试可以用程序直接读取考勤机数据跨过考勤机软件及其access数据库,数据同步及时性.可靠性大幅提高. 通达 ...

  4. xtjh

    <div onkeydown="javascript:if(event.keyCode==13) search()"> <br > ISBN<span ...

  5. Cocos2dx lua 3D实例代码

    用cocoside 创建一个项目 cocos2dx lua 项目即可 ,然后替换掉gamescene 就可以,具体效果还有函数的参数,相信大家一看就明白.简单说下ide 创建的 cocos lua 项 ...

  6. C# PDF添加水印

    需要iTextSharp.dll, 下载地址http://sourceforge.net/projects/itextsharp/ using System;using System.Collecti ...

  7. https协议操作

    在伪静态中加入下列代码 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{SERVER_PORT} 80 RewriteRul ...

  8. Poj(2135),MCMF,模板

    题目链接:http://poj.org/problem?id=2135 Farm Tour Time Limit: 1000MS   Memory Limit: 65536K Total Submis ...

  9. shell脚本中的[]/[[]]区别

    转自:http://www.cnblogs.com/include/archive/2011/12/09/2307905.html 引用: http://www.51testing.com/?uid- ...

  10. linux下查看电脑配置

    1. 查看cpu ~$ cat /proc/cpuinfo 2. 查看内存占用 ~$ cat /proc/meminfo 3. 硬盘分区 $ cat /proc/partitions 4. ubunt ...