Mal*_*lte 6 math objective-c type-conversion swift
我最近一直在努力尝试,而且我遇到了一个相当简单的问题.
在Obj-C中,当我想得到一个浮点数的小数位时,我会做以下事情:
float x = 3.141516
int integer_x = (int)x;
float fractional_x = x-integer_x;
//Result: fractional_x = 0.141516
Run Code Online (Sandbox Code Playgroud)
在斯威夫特:
let x:Float = 3.141516
let integerX:Int = Int(x)
let fractionalX:Float = x - integerX
Run Code Online (Sandbox Code Playgroud)
- >由于错误处理类型导致错误
任何想法如何正确地做到这一点?
提前致谢
马尔特
zap*_*aph 13
使用modf
功能:
let v = 3.141516
var integer = 0.0
let fraction = modf(v, &integer)
println("fraction: \(fraction)");
Run Code Online (Sandbox Code Playgroud)
输出:
分数:0.141516
对于float而不是double只需使用: modff
使用.truncatingRemainder(dividingBy:)
替换模运算符(x%1),其中(对于模数)
给出小数部分.
let x:Float = 3.141516
let fracPart = x.truncatingRemainder(dividingBy: 1) // fracPart is now 0.141516
Run Code Online (Sandbox Code Playgroud)
fracPart
将假设值:0.141516.这适用于double
和float
.
问题是你不能减去 Float 和 Int,你应该将这个值之一转换为与另一个值相同,尝试:
let fractionalX:Float = x - Float(integerX)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7280 次 |
最近记录: |