【发布时间】:2020-06-14 18:15:07
【问题描述】:
我是编程新手,这是我的第一个程序和问题。我正在尝试编写一个函数,它将简单地将十进制时间转换为小时和分钟。我正在删除小时并将十进制分钟乘以 60,然后将两者作为字符串加在一起。我需要在我的程序中使用这个工具几次,因此这个功能。使用此函数的计算很简单,但我得到了奇怪的结果。如果我将 'plannedStartFuel' 保持为 450 并调整 'minLandAllowance' 我会得到以下结果,
185 returns 1:28
182 returns 1:29
181 returns 1:30
180 returns 2:30
179 returns 2:30
175 returns 2:32
正确答案是 1:00 的数字。我不明白为什么该程序似乎在 180 点的结果中增加了一个小时。我确信有比我使用过的更好的方法来完成这个计算,但如果你能帮助我知道哪个部分导致了错误以及原因,我将不胜感激。我尝试了什么?...一切!如果您在 7 岁时提出您的答案,我可能有机会理解。谢谢你。
import UIKit
import Foundation
func decimalHoursConv (hours : Double) -> (_hrs:String, mins:String) {
let remainder = hours.truncatingRemainder(dividingBy: 1) * 60
let mins = (String(format: "%.0f", remainder))
let hrs = (String(format: "%.0f", hours))
return (hrs, mins)
}
var plannedStartFuel = Double (0)
var minLandAllowance = Double (0)
var flyingTimeToMLA = Double(0)
plannedStartFuel = 450
minLandAllowance = 180
flyingTimeToMLA = ((plannedStartFuel - minLandAllowance) / 3)/60
let MLAtime = (decimalHoursConv(hours: flyingTimeToMLA))
print ("Flight Time To MLA =", MLAtime.0,"hrs",MLAtime.1,"mins")
【问题讨论】:
-
String(format: "%.0f", hours)四舍五入小时到下一个整数。 -
太好了,谢谢。有没有快速解决方法?
-
我不建议使用格式化字符串; NumberFormatter 专门用于帮助您将数字表示为字符串。首先把数字弄对。然后想想你希望他们如何呈现给用户。
-
... 和
DateComponentsFormatter专门用于帮助您以小时和分钟表示时间间隔。
标签: swift function calculation