我正在量杯和毫升之间转换体积。用户可以输入杯子数量的分数,例如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完全删除。