Swift double到string
在我更新xCode 6之前,我没有任何问题将一个双重stringbur现在它给了我错误
var a: Double = 1.5 var b: String = String(a)
它给了我错误消息“双不能转换为string”。 有没有其他办法可以做到这一点?
它不是强制转换,而是使用格式的值创build一个string。
var a:Double = 1.5 var b:String = String(format:"%f", a) print("b: \(b)") // b: 1.500000
用不同的格式:
var c:String = String(format:"%.1f", a) print("c: \(c)") // c: 1.5
let myDouble = 1.5 let myString = myDouble.description
更新Xcode 7.1•Swift 2.1:
现在Double也可以转换为String,所以你可以简单地使用它,如你所愿:
let myDouble = 1.5 let myDoubleString = String(myDouble) // "1.5"
Xcode 8.3.2•Swift 3.1 :
对于固定的小数位数也可以扩展Double:
extension FloatingPoint { func fixedFraction(digits: Int) -> String { return String(format: "%.\(digits)f", self as! CVarArg) } }
如果您需要对数字格式(最小和最大分数位数和舍入模式)进行更多控制,可以使用NumberFormatter:
extension Formatter { static let number = NumberFormatter() } extension FloatingPoint { func fractionDigits(min: Int = 2, max: Int = 2, roundingMode: NumberFormatter.RoundingMode = .down) -> String { Formatter.number.minimumFractionDigits = min Formatter.number.maximumFractionDigits = max Formatter.number.roundingMode = roundingMode Formatter.number.numberStyle = .decimal return Formatter.number.string(for: self) ?? "" } } 2.12345.fractionDigits() // "2.12" 2.12345.fractionDigits(min: 3, max: 3, roundingMode: .up) // "2.124"
除了@Zaph的回答,你可以创buildextension:
extension Double { func toString() -> String { return String(format: "%.1f",self) } }
用法:
var a:Double = 1.5 println("output: \(a.toString())") // output: 1.5
在swift中做任何东西都是一个string,除非枚举值只是在println()方法中做的事情
例如:
var stringOfDBL = "\(myDouble)"
这个函数会让你指定显示的小数位数:
func doubleToStringDecimalPlacesWithDouble(number:Double, numberOfDecimalPlaces:Int) -> String { return String(format:"%."+numberOfDecimalPlaces.description+"f", number) }
用法:
let numberString = doubleToStringDecimalPlacesWithDouble(number: x, numberOfDecimalPlaces: 2)
Swift 3+:只需使用这些代码
let num: Double = 1.5 let str = String(format: "%.2f", num)
在迅捷3:
var a: Double = 1.5 var b: String = String(a)
var b = String(stringInterpolationSegment: a)
这对我有用。 你可以试一试
在SWIFT 3中,它很简单,如下所示
let stringDouble = String(describing: double)