建筑功能来确定数字是多少面额

建筑功能来确定数字是多少面额

问题描述:

我想建立一个功能,在需要数量决定它是什么教派,例如是在十万,上百万,数十亿,等建筑功能来确定数字是多少面额

下面是我写过的东西,但它只在某些时候才起作用。例如,当这个数字是一千万时,我的函数认为它是数千,这是我无法理解的,因为千万显然有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 = "" 
} 
} 
+1

什么是'textNPV'和它来自哪里?为什么计算'roundedDoubleInTextForm'而不使用? - 这是你的真实代码吗?你有没有试过*调试它? –

+0

对不起,我复制并粘贴了我的代码并做了一些更改,但没有在更改后调整所有内容。我已经更新了它,并且它是一致的。 –

+0

*调试*您的问题。开始打印'roundedDoubleInTextForm'和'roundedDoubleInTextForm.count'的值...... –

我不相信,使用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)'或用'**'创建一个自定义操作符 –