iel*_*ani 8 string string-interpolation swift
swift中的函数采用Swift中的任何数字类型(Int,Double,Float,UInt等).该函数将数字转换为字符串
功能签名如下:
func swiftNumbers <T : NumericType> (number : T) -> String {
//body
}
Run Code Online (Sandbox Code Playgroud)
NumericType是一种自定义协议,已添加到Swift中的数字类型中.
在函数体内,该数字应转换为字符串:
我使用以下内容
var stringFromNumber = "\(number)"
Run Code Online (Sandbox Code Playgroud)
这不是那么优雅,PLUS:如果数字的绝对值严格低于0.0001则给出:
"\(0.000099)" //"9.9e-05"
Run Code Online (Sandbox Code Playgroud)
或者如果数字是一个大数字:
"\(999999999999999999.9999)" //"1e+18"
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个字符串插值限制?(不使用Objective-C)
PS:
NumberFormater 也不起作用
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"
Run Code Online (Sandbox Code Playgroud)
Ani*_*tha 10
1)为字符串添加不同的类型
2)表示字符串是由常量,变量,文字或表达式的混合创建的.
例:
let length:Float = 3.14
var breadth = 10
var myString = "Area of a rectangle is length*breadth"
myString = "\(myString) i.e. = \(length)*\(breadth)"
Run Code Online (Sandbox Code Playgroud)
输出:
3.14
10
Area of a rectangle is length*breadth
Area of a rectangle is length*breadth i.e. = 3.14*10
Run Code Online (Sandbox Code Playgroud)
小智 5
使用Swift String初始值设定项:String(format: <#String#>, arguments: <#[CVarArgType]#>)
例如:
let stringFromNumber = String(format: "%.2f", number)
| 归档时间: |
|
| 查看次数: |
9556 次 |
| 最近记录: |