String interpolation in Swift

痴心易碎 提交于 2019-12-22 04:35:41

问题


A function in swift takes any numeric type in Swift (Int, Double, Float, UInt, etc). the function converts the number to a string

the function signature is as follows :

func swiftNumbers <T : NumericType> (number : T) -> String {
    //body
}

NumericType is a custom protocol that has been added to numeric types in Swift.

inside the body of the function, the number should be converted to a string:

I use the following

var stringFromNumber = "\(number)"

which is not so elegant, PLUS : if the absolute value of the number is strictly inferior to 0.0001 it gives this:

"\(0.000099)" //"9.9e-05"

or if the number is a big number :

"\(999999999999999999.9999)" //"1e+18"

is there a way to work around this string interpolation limitation? (without using Objective-C)

P.S :

NumberFormater doesn't work either

import Foundation

let number : NSNumber = 9_999_999_999_999_997

let formatter = NumberFormatter()
formatter.minimumFractionDigits = 20
formatter.minimumIntegerDigits = 20
formatter.minimumSignificantDigits = 40

formatter.string(from: number) // "9999999999999996.000000000000000000000000"

let stringFromNumber = String(format: "%20.20f", number) // "0.00000000000000000000"

回答1:


Swift String Interpolation

1) Adding different types to a string

2) Means the string is created from a mix of constants, variables, literals or expressions.

Example:

let length:Float = 3.14
var breadth = 10
var myString = "Area of a rectangle is length*breadth"
myString = "\(myString) i.e. = \(length)*\(breadth)"    

Output:

3.14
10
Area of a rectangle is length*breadth
Area of a rectangle is length*breadth i.e. = 3.14*10



回答2:


Use the Swift String initializer: String(format: <#String#>, arguments: <#[CVarArgType]#>) For example: let stringFromNumber = String(format: "%.2f", number)



来源:https://stackoverflow.com/questions/25595542/string-interpolation-in-swift

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!