如果在Swift中是整数,则显示双精度整数
我正在尝试编写一个方法来检查.0中的双端是否与其他任何东西相同。例如,检查它是2.0还是2.12345 如果它是2.0,那么我希望它只显示2,但是如果它是2.12345,那么显示2.12345 我想写一个func,它以Double作为参数并返回Int,但是如果输入结果是.12345,它就不能返回它 所以我想知道我所想的方法是否可以用于调整,或者是否有类似的方法 我在想,也许返回类型可以是Int和Double,但我不知道如何工作 这就是我目前所拥有的如果在Swift中是整数,则显示双精度整数,swift,Swift,我正在尝试编写一个方法来检查.0中的双端是否与其他任何东西相同。例如,检查它是2.0还是2.12345 如果它是2.0,那么我希望它只显示2,但是如果它是2.12345,那么显示2.12345 我想写一个func,它以Double作为参数并返回Int,但是如果输入结果是.12345,它就不能返回它 所以我想知道我所想的方法是否可以用于调整,或者是否有类似的方法 我在想,也许返回类型可以是Int和Double,但我不知道如何工作 这就是我目前所拥有的 private func checkIfW
private func checkIfWholeNumber(displayedDouble: Double) -> Int {
if displayedDouble.truncatingRemainder(dividingBy: 1) == 0 {
return Int(displayedDouble)
} else {
return //
}
}
只需使用
四舍五入
功能即可
func check(val:Double)->Int?{
let rounded = val.rounded()
return rounded == val ? Int(rounded) : nil
}
若要在标签上显示,请将Double转换为数字,然后再转换为字符串
let i = 1.0
let j = 1.2345
// Value in String
let a = NSNumber(value: j).stringValue // "1.2345"
let b = NSNumber(value: i).stringValue // "1"
// Value in Double
let c = NSNumber(value: i).doubleValue // 1.0
let d = NSNumber(value: j).doubleValue // 1.2345
Swift 4+
let i = 2.0
let j = 2.12345
let nf = NumberFormatter()
nf.maximumFractionDigits = 6
let a = nf.string(for: i) ?? "" // 2
let b = nf.string(for: j) ?? "" // 2.12345
对于另一个选项,此示例使用NumberFormatter()。我只是主观地将最大数字设置为6 您可能想在某个标签上显示此数字,对吗?您应该使用
NumberFormatter
。不检查数字是否为整数。@NiravD yes Iam@RubberDucky4444然后,您可以使用返回类型String
代替Int
和Double
@RubberDucky4444,然后有两种更好的方法。如果要显示1
、1.2
和1.23
,只需设置小数位数的最大值即可。如果要显示1
,1.20
,1.23
,则另一种可能的解决方案是检查字符串是否以正则表达式[,]00
结尾,如果是,则截断最后3个字符。顺便提一下,我确信这是一个重复的问题,但我找不到。请注意,check(val:0.1+0.2-0.3)
返回nil
——这可能是需要的,也可能不是。这是因为双精度。您输入的结果可以是0.0000…00001
,或者确切地说(“在我的系统上”)5.55111512312578e-17
,或者只是“\(1.2345)”
让c=NSNumber(值:i)。doubleValue不返回1
。相反,它返回1.0
。答案应该是仅转换为NSNumber。