String interpolation in Swift

ielyamani picture ielyamani · Aug 31, 2014 · Viewed 12.3k times · Source

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"

Answer

Anitha picture Anitha · Sep 21, 2016

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