如何从浮点值中删除前导零Swift 3

问题描述:

由于Float价格为0.33,我想删除前导零和小数点,以便我可以将其显示为33美分。如何从浮点值中删除前导零Swift 3

仅仅通过100

0.33 * 100 = 33 

乘它,如果它是一个字符串。即“0.33”,那么,

if let float = Float("0.33") { 

    let cents = float * 100 

    let centsStr = "\(cents)" // equals "33" 
} 

如果你有一个多位小数的情况,那么就绕过这条路。

if let float = Float("0.332123") { 

    let cents = Int(round(float * 100)) 

    let centsStr = "\(cents)" // equals "33" 

    print(centsStr) 
} 
+0

男人有任何疑问评论我觉得愚蠢!我应该想到这一点。谢啦 ! – Ryan

100只需乘以价格,将其转换为Int摆脱一分的分数。如果你想四舍五入那么它稍微复杂一些。

比方说price = 3.335

然后做

if (price*1000 %10 >= 5) { 
    price = Int(price * 100 + 1) 
} 
else { 
    price = Int(price * 100) 
} 

else部分是你所需要的,如果你不关心四舍五入最后一分钱做。

+0

您可以将它转换为double,然后使用round(),然后将其转换回int。 –

+0

@TristanBeaton是的,哈哈,可能会更容易。我不知道有双打的round()函数。 – RPatel99

+0

它也可用于浮动。你可以在我的答案中看到。这是一个相当聪明的四舍五入的方式,你已经想出了。 –

尝试下面的代码,

var floatNumber = 0.33 
let cent:Int = {() -> Int in 

    if floatNumber > 1{ 
     floatNumber = floatNumber-floatNumber.rounded() 
    } 
    while floatNumber <= 0.1{ 
     floatNumber = floatNumber*100 
    } 
    return Int((floatNumber*100).rounded()) 
}() 
print(cent) //33 

输出:

floatNumber = 0.33 -> 33 
floatNumber = 1000000.33 -> 33 
floatNumber = 0.0000033 -> 33 

如果你有如下:)