【问题标题】:The compiler is unable to type-check this expression编译器无法对该表达式进行类型检查
【发布时间】:2019-04-21 14:00:43
【问题描述】:

我想将差异数据分成 60 并将其打印为双数。当我将其打印为字符串时,它似乎不是数字的一小部分。当我打印数字 "n" 时,我遇到了这个问题。我该怎么办?

我的错误:编译器无法在合理的时间内对该表达式进行类型检查;尝试将表达式分解为不同的子表达式

if let date = formatter.date(from: receivedTimeString) {
    let receivedTimeHoursMinutes = Calendar.current.component(.hour, from: date) * 60
    let receivedTimeMinutes = Calendar.current.component(.minute, from: date)
    let totalreceivedTimeMinutes = receivedTimeHoursMinutes + receivedTimeMinutes

    let todayHoursMinutes = Calendar.current.component(.hour, from: Date()) * 60
    let todayMinutes = Calendar.current.component(.minute, from: Date())
    let todayTimeMinutes = todayHoursMinutes + todayMinutes

    let difference = todayTimeMinutes - totalreceivedTimeMinutes
    let str = String(difference)

    switch true {
    case difference > 60:
        let deger = String(difference / 60)
        guard let n = NumberFormatter().number(from: deger) else { return }

        print("deger", deger)
        self.labelTimerFarkSonuc.text = (n) + (" ") + ("Saattir") + (" ") + (durum)
    case difference == 0:
        self.labelTimerFarkSonuc.text = (n) + (" ") + ("Dakikadır")  + (" ") + (durum)
    case difference < 60:
        self.labelTimerFarkSonuc.text = (n) + (" ") + ("Dakikadır")  + (" ") + (durum)
    default:
        self.labelTimerFarkSonuc.text = (n) + (" ") + ("Dakikadır")  + (" ") + (durum)
    }

【问题讨论】:

  • 您不需要(n) + (" ") + ("Dakikadır") + (" ") + (durum) 中的任何括号。他们只是增加了视觉噪音。字符串插值看起来也更好(在这种情况下):"\(n) Dakikadır \(durum)"

标签: swift


【解决方案1】:

如果我正确理解了你的问题,

如果你想得到以下代码的结果为小数,

let deger = String(difference / 60) // Dividing by INT will not give fractions.

将其更改为以下。

let deger = String(difference / 60.0)

【讨论】:

  • 错误代码:二元运算符'/'不能应用于'Int'和'Double'类型的操作数
  • bcoz 的区别是 INT。请将其转换为双倍并尝试
  • 例如,当我以 5.966666666612321 的形式进行拆分过程时,会给出输出。我只想写 5.96 怎么办? @Anand
  • 请参阅 NumberFormatter 选项,如最小小数位数等。此处记录:developer.apple.com/documentation/foundation/numberformatter
  • 让 degerdakika = String(format: "%.2f", (Double(difference) / 60.0)) 谢谢
猜你喜欢
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
  • 2021-10-26
  • 2020-06-30
  • 2020-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多