Отображение двойников в метках с И без десятичной точки

Чтобы выбрать лучший ответ, прокрутите вниз до ответа Paulw11.

(Я извиняюсь за любые английские ошибки, это не мой первый язык)

Мне нужно решить эту проблему, чтобы продолжить разработку моего приложения.

Здесь я получил скриншот. (Я знаю, это некрасиво, я устанавливаю ограничения.)

Проблема в том, что даже когда число целое, оно все равно отображается как рациональное. (пример: 4 появляется как 4.0, 16 как 16.0)

Я хочу:

  • Когда число в текстовом поле целое, я хочу, чтобы оно отображалось без десятичной точки. (4 отображается как 4, 16 отображается как 16)
  • Когда число в текстовом поле рационально, я хочу, чтобы оно отображалось с принадлежащей ему десятичной точкой. (4.2 появляется как 4.2, 2.5 как 2.5)

Чего я не хочу:

  • Округлите любое число. Это испортит математику. Как я уже сказал, 4.22 должно быть 4.22. Но 4.0 должно быть только 4 .

Буду очень благодарен за любую помощь, спасибо.


person Caio Luis Gomes    schedule 22.07.2016    source источник
comment
Не могли бы вы опубликовать код, пожалуйста?   -  person Lahav    schedule 22.07.2016
comment
Это, вероятно, то, что вам нужно: stackoverflow.com/a/6813241/2687360   -  person Bienemann    schedule 22.07.2016
comment
Нет, @Asdrubal, я не хочу это округлять.   -  person Caio Luis Gomes    schedule 22.07.2016
comment
Это на Objective-C, не так ли? Поскольку я новичок в программировании, еще сложнее... "перевести" язык на другой. И я тоже не нашел решения.   -  person Caio Luis Gomes    schedule 22.07.2016
comment
@Bienemann, я упрощу: var deltaValue: Double = 0 // var for the math @IBOutlet weak var deltaValueS: UILabel! //label to hold the value deltaValue = (valueBint! * valueBint!) - (4 * valueAint! * valueCint!) deltaValueS.text = "∆ é " + deltaValue.description   -  person Caio Luis Gomes    schedule 22.07.2016
comment
может быть, преобразовать целое число в строку и проверить последние два элемента? Если он заканчивается на .0, вы удаляете эти два элемента из строки.   -  person Abhi V    schedule 22.07.2016


Ответы (2)


Вы можете просто использовать параметр форматирования %g:

deltaValueS.text = String(format:"∆ é %g",deltaValue)
  • Для 4.0 это даст "∆ é 4"
  • Для 4,123 это даст «∆ é 4,123».
person Paulw11    schedule 22.07.2016
comment
Вау! Это сработало лучше, чем ответ Влада. Снижает работу и персонажей. Очень благодарен, спасибо! - person Caio Luis Gomes; 23.07.2016

Вы хотите что-то вроде этого?

let numberA: Float = 1.234
let numberB: Float = 7.000

func getStringFromNumber(number: Float) -> String {
    if number - Float(Int(number)) == 0 {
        return String("\(Int(number))")
    } else {
        return String("\(number)")
    }
}

print(getStringFromNumber(numberA)) // console output: 1.234
print(getStringFromNumber(numberB)) // console output: 7
person Vlad Bogdan    schedule 22.07.2016
comment
Это сработало так хорошо! Я очень благодарен за ваш ответ, именно то, что я хотел. Спасибо! - person Caio Luis Gomes; 22.07.2016