Swift 构建函数以确定数字的面额

Swift 构建函数以确定数字的面额,swift,function,io,double,Swift,Function,Io,Double,我试图构建一个函数,它以一个数字来决定它的面额,例如,它是以千、百万、十亿等为单位的 下面是我写的,但它只在某些时候起作用。例如,当数字是1000万时,我的函数认为它是以千为单位的,这我不理解,因为1000万中显然有超过6个数字 我的代码: func configureDenominationLabel() { let roundedDouble = round(veryLargeNumber) let roundedDoubleInTextForm = String(roundedDoub

我试图构建一个函数,它以一个数字来决定它的面额,例如,它是以千、百万、十亿等为单位的

下面是我写的,但它只在某些时候起作用。例如,当数字是1000万时,我的函数认为它是以千为单位的,这我不理解,因为1000万中显然有超过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 = ""
}
双分机{
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)
或使用
**