建筑功能来确定数字是多少面额
问题描述:
我想建立一个功能,在需要数量决定它是什么教派,例如是在十万,上百万,数十亿,等建筑功能来确定数字是多少面额
下面是我写过的东西,但它只在某些时候才起作用。例如,当这个数字是一千万时,我的函数认为它是数千,这是我无法理解的,因为千万显然有6位数以上。
我的代码:
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 = ""
}
+0
您是否知道'10^3'不会评估为1000? –
+0
你说得对,我忘了,这是我认为的按位异或。你可以使用'pow(10,3)'或用'**'创建一个自定义操作符 –
什么是'textNPV'和它来自哪里?为什么计算'roundedDoubleInTextForm'而不使用? - 这是你的真实代码吗?你有没有试过*调试它? –
对不起,我复制并粘贴了我的代码并做了一些更改,但没有在更改后调整所有内容。我已经更新了它,并且它是一致的。 –
*调试*您的问题。开始打印'roundedDoubleInTextForm'和'roundedDoubleInTextForm.count'的值...... –