Почему мой модуль форматирования строк делает аргумент 0.00 вместо его фактического значения - PullRequest
1 голос
/ 18 июня 2020

Я надеюсь, что это небольшое исправление, но у меня есть текстовое поле, которое представляет собой номер, который вводит пользователь. Его выход называется billTextField. Мне нужно изменить его на float / double вместо строки, но я хочу, чтобы он не превышал go два десятичных знака. Я отлаживал, и когда я go

Double(billTextField.text ?? "") ?? 1

, он печатает правильное значение, но когда я пытаюсь использовать средство форматирования строк

Double(String(format: "%.2f", billTextField.text ?? "")) ?? 2

, значение становится 0.00, даже если мой в текстовом поле указано 125,50 или любое другое число. Я предполагаю, что причиной этого должен быть форматтер строк, какие-нибудь идеи?

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Здесь проблема с String(format:), вам необходимо указать второй параметр как Double, вот как:

let doubleValue = Double(billTextField.text!) ?? 0 // You can force unwrap strings since it never returns nil credits @Leo
let roundedDoubleValue = Double(String(format: "%.2f", doubleValue)) ?? 2

Или используйте round на Double, например:

let roundedDoubleValue = Double(round(100*doubleValue)/100) // number of zeros for number of places
0 голосов
/ 18 июня 2020

Я думаю, это потому, что вы пытаетесь скрыть строку в строку, поэтому вы получили 0.00.

но вы можете уйти с этим

  let dubleNumber = Double(billTextField.text!) ?? 0
  let formatter = NumberFormatter()
  formatter.maximumFractionDigits = 2
  formatter.string(for: dubleNumber)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...