拆分Double的小数和整数部分

时间:2019-03-05 19:21:08

标签: swift math

我正在量杯和毫升之间转换体积。用户可以输入杯子数量的分数,例如3和1/2杯子,这些分数将存储为2个变量:整个部分的Int和分数的Float 。转换为mL时,我可以轻松地将它们两个都Double,将它们相加,然后将其乘以转换率,并最终输出为Int,以得到足够接近的近似值。

问题是将其转换回杯子。我现在有一个整数,所以我可以将其设置为Double,然后将其除以转换率(240),得到Double,该分数具有分数,主要问题是,我需要再次存储为2个变量,Int代表整数(杯),Float代表剩余数。

我似乎找不到找到剩余物的方法。

float newAmount = amount/240;
int cups = Math.floor(newAmount)
float fraction = newAmount % 1

除以2时,如何在Swift中得到余数(分数)?关于此的大多数问题只是我知道如何将Double转换为Int

我尝试用truncatingRemainder运行测试,它完全删除了剩余部分。这是我进行的测试...

let constA = 6
print(constA)

let constB:Float = 0.25
print(constB)

let currentAmount = Double(constA) + Double(constB)
print(currentAmount)

let newAmount = currentAmount * 240
print(newAmount)
let finalInt = Int(newAmount)
print(finalInt)

let conversionAmount = Double(finalInt) / 240
print("conversion: \(conversionAmount)")
let remainder = newAmount.truncatingRemainder(dividingBy: 1)
print("remainder \(remainder)")
var fraction = 0.0
if remainder > 0.0 {
    if remainder <= 0.25 {
        fraction = 0.25
    } else if remainder <= 0.50 {
        fraction = 0.50
    } else {
        fraction = 0.75
    }
}
print(fraction)

输出是...

6
0.25
6.25
1500.0 
1500 
conversion: 6.25 
remainder 0.0
0.0

由于某种原因,truncatingRemainder(dividingBy:1)方法将数字中的.25完全删除。

0 个答案:

没有答案