Swift 构建函数以确定数字的面额
我试图构建一个函数,它以一个数字来决定它的面额,例如,它是以千、百万、十亿等为单位的 下面是我写的,但它只在某些时候起作用。例如,当数字是1000万时,我的函数认为它是以千为单位的,这我不理解,因为1000万中显然有超过6个数字 我的代码:Swift 构建函数以确定数字的面额,swift,function,io,double,Swift,Function,Io,Double,我试图构建一个函数,它以一个数字来决定它的面额,例如,它是以千、百万、十亿等为单位的 下面是我写的,但它只在某些时候起作用。例如,当数字是1000万时,我的函数认为它是以千为单位的,这我不理解,因为1000万中显然有超过6个数字 我的代码: func configureDenominationLabel() { let roundedDouble = round(veryLargeNumber) let roundedDoubleInTextForm = String(roundedDoub
func configureDenominationLabel() {
let roundedDouble = round(veryLargeNumber)
let roundedDoubleInTextForm = String(roundedDouble)
switch roundedDoubleInTextForm.count {
case 0...3:
denominationsLabel.text = ""
case 4...6:
denominationsLabel.text = "Thousand"
case 7...9:
denominationsLabel.text = "Million"
case 10...12:
denominationsLabel.text = "Billion"
case 13...15:
denominationsLabel.text = "Trillion"
default:
denominationsLabel.text = ""
}
}
我不认为对字符串使用
count
方法是最好的方法。如果希望代码看起来更好,可以尝试以下方法:
extension Double {
var thousands: Double { return self * pow(10, 3) }
var millions: Double { return self * pow(10, 6) }
var billions: Double { return self * pow(10, 9) }
var trillions: Double { return self * pow(10, 12) }
...
}
...
if veryLargeNumber < 1.thousands {
denominationsLabel.text = ""
} else if veryLargeNumber < 1000.thousands {
denominationsLabel.text = "Thousands"
} else if veryLargeNumber < 1000.millions {
denominationsLabel.text = "Millions"
} else if veryLargeNumber < 1000.billions {
denominationsLabel.text = "Billions"
} else if veryLargeNumber < 1000.trillions {
denominationsLabel.text = "Trillions"
} else {
denominationsLabel.text = ""
}
双分机{
var千:双{返回自*pow(10,3)}
var百万:双{返回自*pow(10,6)}
var十亿:双{返回自*pow(10,9)}
var万亿:双{返回自*pow(10,12)}
...
}
...
如果veryLargeNumber<1.000{
denominationsLabel.text=“”
}否则,如果veryLargeNumber<1000.000{
面额标签.text=“千”
}否则,如果veryLargeNumber<1000.数百万{
面额标签.text=“百万”
}否则,如果veryLargeNumber<1000.00亿{
面额标签.text=“十亿”
}否则,如果veryLargeNumber<1000.万亿{
面额标签.text=“万亿”
}否则{
denominationsLabel.text=“”
}
什么是textNPV
它来自哪里?为什么roundedDoubleInTextForm
是计算出来的,但没有使用这是你真正的密码吗?你试过调试它吗?很抱歉,我复制并粘贴了我的代码,做了一些更改,但更改后没有调整所有内容。我已经更新了它并且它是一致的。调试你的问题。首先打印roundedDoubleInTextForm
和roundedDoubleInTextForm.count
..@MartinR谢谢。我自己应该能做到的。问题是我没有考虑小数点。你知道10^3
的计算结果不是1000吗?你是对的,我忘了,我认为这是位异或。您可以使用pow(10,3)
或使用**