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)