如何在Swift中获取数字的整数部分和小数部分

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)


Tre*_*vor 5

Swift 4.x完整解决方案: 我也赞扬@Thomas解决方案,我想补充一些东西,使我们能够在2个字符串部分中使用分开的部分。尤其是当我们要使用2个不同UILabelmaindecimal部分的数量。

整数和十进制分隔的标签

下面的扩展名也是管理小数的数量。我认为这可能有用。

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)