print(String(Float(2 * (10/9))))
Почему этот код печатает «2.0»?
С помощью калькулятора, «2 * (10/9)» равна 2,222222 бы .....уравнение с плавающей математикой не работает как ожидалось
print(String(Float(2 * (10/9))))
Почему этот код печатает «2.0»?
С помощью калькулятора, «2 * (10/9)» равна 2,222222 бы .....уравнение с плавающей математикой не работает как ожидалось
Вы вычисления с целыми числами и бросить (целое число) приводит к Float
.
Делайте ваш расчет с типами с плавающей запятой (Double
) вместо:
print(String(Float(2.0 * (10.0/9.0))))
Не нужно бросить хотя:
print(2.0 * (10.0/9.0))
2,0 * (10,0/9,0) даст свой ожидаемый результат.
В вашем случае, Swift делает расчеты, основанные на целых числах первого (результат = 2), а затем преобразует это число с плавающей точкой (результат = 2.0), и это в строку (результат = «2.0»)
К получить правильный результат, следует читать:
print(String(Float(2.0 * (10.0/9.0))))
Вы затем смогли выйти из беседы два типа:
print(2.0 * (10.0/9.0))
@MartinR это связано с вопросом, что я столкнулся пару недель назад (я полагаю, что ты прощаешь ot об этом), который представляет собой числа с плавающей запятой, представлены в виде научных обозначений? –
@AhmadF: Извините, я не знаю, о чем вы говорите. - Но это не связано с числами с плавающей запятой или научной нотацией. '10/9' - целочисленное деление и оценивает значение' 1' в Swift и во многих других языках программирования. –
@MartinR Спасибо за ваш ответ, моя проблема в том, как я могу подсчитать количество цифр после «.». (с правой стороны) в плавающих точках, вы и Роб сказали мне, что это невозможно, и, наверное, мой вопрос помечен как дублированный [этот] (http://stackoverflow.com/questions/588004/is-floating- точка-математическая разбитый). –