• 代码如下,输入要保留的小数个数 ...extension Double { /// Rounds the double to decimal places value func roundTo(places:Int) -> Double { let divisor = pow(10.0, Double(places))...

    代码如下,输入要保留的小数个数

     

    extension Double {

        /// Rounds the double to decimal places value

        func roundTo(places:Int) -> Double {

            let divisor = pow(10.0, Double(places))

            return (self * divisor).rounded() / divisor

        }

    }



          本文转自zsdnr  51CTO博客,原文链接:http://blog.51cto.com/12942149/1928937,如需转载请自行联系原作者



    展开全文
  • 请问怎么将double转成string才能不损失数据本身的小数位数呢,例如,将1.000转换为“1.000” 直接转换会变成1,而使用format则需要指定保留小数点位数,否则自动保留6 可不可以什么都不要做,我就想转个字符串而已...
  • import UIKit var str = "Hello, playground" // 1 字符串转Int Double Float var str1 = "...var val2 = Double(str1); // 转float var val3 = Float(str1); print(val3!...
    import UIKit
    
    var str = "Hello, playground"
    // 1 字符串转Int Double Float
    var str1 = "818";
    // 转Int
    var val1 = Int(str1);
    // 转Double
    var val2 = Double(str1);
    // 转float
    var val3 = Float(str1);
    
    // 如果是25.0 转 Int,则需要先转为Double 类型再将其转为Int类型
    var val4 = "25.0";
    let count = Double(val4);
    let val4_int  =  Int(count);
    
    
    print(val3!);
    
    
    
    
    
    // 2 数字转为字符串
    var num1 = 25;
    var str2 = "\(num1)";
    // 如果是Int 类型的话 直接进行转
    var str3 = String(num1);
    
    // 如果是Double 类型的话 可以通过以下方式进行转换
    var str4 = String(stringInterpolationSegment: num1);
    
    
    // 3 数字相互转换
    var num2 = 25.0;
    // Double 转为 Int
    var num3 = Int(num2);
    
    
    
    展开全文
  • 在计算1.0-0.9的时候打印并不是0.1 Float let a = Float.init(1.0) - Float.init(0.9) print(a) let b = Float.init(0.9) - Float.init(0.8) print(b) if(a == b){ print("true") } else{ print("false") ...

    在计算1.0-0.9的时候打印并不是0.1

    Float

    let a = Float.init(1.0) - Float.init(0.9)
    print(a)
    let b = Float.init(0.9) - Float.init(0.8)
    print(b)
    if(a == b){
        print("true")
    }
    else{
       print("false")
    }
    

    打印:

    0.100000024
    0.099999964
    false
    

    Double

    注:1.0 带小数点再不写是哪种类型的情况下默认是Double

    print("\(1.0 - 0.9)");
    
    print("\(0.9 - 0.8)");
    if((1.0 - 0.9) == (0.9 - 0.8)){
        print("true")
    }
    else{
        print("false")
    }
    

    或者

    let c = Double.init(1.0) - Double.init(0.9)
    print(c)
    let d = Double.init(0.9) - Double.init(0.8)
    print(d)
    if(c == d){
        print("true")
    }
    else{
        print("false")
    }
    

    打印是一致

    0.09999999999999998
    0.09999999999999998
    true
    
    展开全文
  • floor()函数:向下取整,取小于等于这个数的最大整数 ...extension Double { func intValue() -> Int { return Int(self) } func stringIntValue() -> String { ...

    floor()函数:向下取整,取小于等于这个数的最大整数 (floor(3.94) = 3)
    ceil()函数:向上取整,取大于等于这个数的最小整数 (ceil(3.14) = 4)

    import Foundation
    
    extension Double {
        func intValue() -> Int {
            return Int(self)
        }
        func stringIntValue() -> String {
            return String(Int(self))
        }
        func stringValue() -> String {
            return String(self)
        }
        
        func floorValue(bit: Int = 0) -> Double {
            var n = bit
            var s = 1.0
            while n > 0 {
                n -= 1
                s *= 10
            }
            return floor(self * s) / s
        }
        func floor2Value() -> Double {
            return floorValue(bit: 2)
        }
        func stringFloor2Value() -> String {
            return String(format: "%.2f", self.floor2Value())
        }
       
        func ceilValue(bit: Int = 0) -> Double {
            var n = bit
            var s = 1.0
            while n > 0 {
                n -= 1
                s *= 10
            }
            return ceil(self * s) / s
        }
        func ceil2Value() -> Double {
            return ceilValue(bit: 2)
        }
        func stringCeil2Value() -> String {
            return String(format: "%.2f", self.ceil2Value())
        }
    }
    
    展开全文
  • 四舍六入五单双的官方结束如下:“四舍六入五单双”的法则:即看要保留的有效数字后一数字,如果大于5,...但是swift中似乎并不是这样,我举个例子说明:class func doubleToString(value:Double,point:Int)->String{

    四舍六入五单双的官方结束如下:“四舍六入五单双”的法则:即看要保留的有效数字后一位数字,如果大于5,向前进一位,小于4则舍去.等于5则看5后,如5后不全为0,则进一位.5后全为零则看5前,若为奇,则进1,若为偶,则舍去.
    但是swift中似乎并不是这样,我举个例子说明:

    class func doubleToString(value:Double,point:Int)->String{
          return   NSString(format: "%.\(point)f", value) as String
        }

    print(Common.doubleToString(12.6225, point: 3)) //12.623
    print(Common.doubleToString(12.6215, point: 3)) //12.621
    注释后面跟着的就是打印值,和定义的规则似乎有出入。

    那么,还有一点很奇怪的现象就是:
    var sum:Double = 0
    下面的值分别是:13.51,11.51,12.51,13.51,因为需要统一保留三位小数,所以我丧心病狂的使用了上面的方法把这些数据转成了“13.510”,“11.510”,“12.510”,“13.510”
    然后再使用sum = sum + Double(v)! 求和
    再然后 let s = Common.doubleToString(sum/4.0, point: 3)
    无数次循环下,答案居然出现了12.623 /12.622交替随机出现的情况。
    打印su m/4.0得到的答案是12.6225,直接打印Common.doubleToString(12.6225, point: 3)打印出的结果始终都是12.623,直接打印Common.doubleToString(50.49/4.0, point: 3)打印出的结果也是依然坚持12.623,并无任何随机情况出现。于是,所以我开始推测,sum和50.49既然有不同的结果,就说明两个值并不是完全相等,那么最可能的差距在哪里,就是小数位保留。
    于是采用如下方式:

    let st = Common.doubleToString(sum, point: 3)
    let s = Common.doubleToString(Double(st)!/Double(c), point: 3)

    果然答案始终是12.623,再无任何随机现象出现。
    我没办法解释这个事情,先记下来,以后有了新的领悟再来修改吧。

    展开全文
  • 字符串 转 int 是 toint() 和 String(int)
  • let str = "10.0" let double = (str as NSString).doubleValue 或 let double = str.bridgeToObjectiveC().doubleValue
  • 三种转换模式任何语言里面,Int、float、double等数字类型自成一派,但它们和String类型之间的转换总是不太方便,这里总结一下它们相互转换的方法。总结下来一共有三种转换模式,分别举例说明。一、String转数字这里...
  • String to Double in swift

    2015-06-03 09:54:12
    var value1:String = "1.1111" var value2:Double = String.bridgeToObjectiveC(value1)().doubleValue
  • swiftDouble转String

    2019-10-01 04:10:36
    swift上手有好几天了。发现swift除了本身的几个基本类型转换,一些比较特殊的数值类型转换需要“桥接”到Objective-C来进行~ 代码当然也很简单~ var numString = "1.0" var numDouble:Double numDouble = ...
  • //定义一个浮点类型变量 通过变量的树枝 判断变量类型为浮点型 var a = 1.5 //定义一个float类型的浮点型。...//定义一个double的浮点数。 精度高 可存储大 var d:Double = 3.5 d+2.5 //增加。其它同理 //变量的值...
  • swift 中 把 String转成Int或Double。。。
  • 1.只要输出结果 1 2 double x1 = 0.026; System.out.println(String.format("%.2f", x1)); 2.数据转换 1 2 3 4 5 6 7
  • 两个Int型的数相除,要先转换为Float,然后再进行运算,用String的构造方法保留两小数,再将String转换为Float let num1 = 12345 let str = String(format: "%.2f", Float(num1)/1000) let num2 = ...
  • Double类型的数据保留2位小数: Double a = 2.34566; BigDecimal bd = new BigDecimal(a); Double d = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); d输出就是2.35, 注意会四舍五入 将String转...
  • /*  变量 和常量  c 语言 int a;  */     // 一句话的结尾 可以不要分号哦  print("Hello world")        var a = 10
1 2 3 4 5 ... 20
收藏数 11,562
精华内容 4,624
热门标签