Компилятору не удается ввести-проверить это выражение

#swift

#swift

Вопрос:

Я хочу разделить разностные данные на 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)
    }
  

Комментарии:

1. Вам не нужны никакие скобки в (n) (" ") ("Dakikadır") (" ") (durum) . Они просто добавляют визуальный шум. Интерполяция строк также выглядит лучше (в этом случае): "(n) Dakikadır (durum)"

Ответ №1:

Если бы я правильно понял ваш вопрос,

Если вы хотите получить результат следующего кода в виде десятичной дроби,

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

Измените его на следующее.

 let deger = String(difference / 60.0)
  

Комментарии:

1. Код ошибки: двоичный оператор ‘/’ не может быть применен к операндам типа ‘Int’ и ‘Double’

2. Разница в bcoz равна INT. Пожалуйста, приведите его к double и попробуйте

3. Например, когда я выполняю процесс разделения в форме 5.966666666612321, выдает результат. Как я могу это сделать, я просто хочу написать 5.96? @Anand

4. Пожалуйста, смотрите параметры NumberFormatter, такие как минимальные цифры дроби и т.д. это задокументировано здесь: developer.apple.com/documentation/foundation/numberformatter

5. пусть degerdakika = String(формат: «%.2f», (Двойная (разница) / 60.0)) спасибо