use*_*509 3 math optimization swift
这是一个超级基本的问题,但是,我似乎无法在Swift中找到答案.
题:
如何获取Swift 2和Swift 3中数字的整数部分和小数部分(分别位于小数点的左侧和右侧)?例如,对于数字1234.56789 -
如何获得整数部分1234 .56789?
我如何获得小数部分1234. 56789?
Tho*_*mas 34
你可以做简单的楼层和截断:
let value = 1234.56789
let double = floor(value) // 1234.0
let integer = Int(double) // 1234
let decimal = value.truncatingRemainder(dividingBy: 1) // 0.56789
Run Code Online (Sandbox Code Playgroud)
iOS*_*com 10
不需要扩展。Swift 已经为此内置了函数。
let aNumber = modf(3.12345)
aNumber.0 // 3.0
aNumber.1 // 0.12345
Run Code Online (Sandbox Code Playgroud)
小智 5
稍后将您的数字转换为字符串,将字符串与 .
尝试这个:-
let number:Float = 123.46789
let numberString = String(number)
let numberComponent = numberString.components(separatedBy :".")
let integerNumber = Int(numberComponent [0])
let fractionalNumber = Int(numberComponent [1])
Run Code Online (Sandbox Code Playgroud)
Swift 4.x完整解决方案:
我也赞扬@Thomas解决方案,我想补充一些东西,使我们能够在2个字符串部分中使用分开的部分。尤其是当我们要使用2个不同UILabel的main和decimal部分的数量。
下面的扩展名也是管理小数的数量。我认为这可能有用。
extension Double{
func integerPart()->String{
let result = floor(self).description.dropLast(2).description
return result
}
func fractionalPart(_ withDecimalQty:Int = 2)->String{
let valDecimal = self.truncatingRemainder(dividingBy: 1)
let formatted = String(format: "%.\(withDecimalQty)f", valDecimal)
return formatted.dropFirst(2).description
}
}
Run Code Online (Sandbox Code Playgroud)