Swift: Double/Float не получает десятичных значений

Я пытаюсь получить десятичные дроби в простом делении, но всегда возвращаю ноль:

(lldb) po Double(20 / 100)
0.0

(lldb) po Float(20 / 100)
0.0

Кто-нибудь из вас знает, почему возвращается ноль? или есть способ получить 0.20 ?

Я буду очень признателен за вашу помощь


person user2924482    schedule 11.01.2021    source источник


Ответы (1)


20 / 100 — целочисленное деление, как и 0 (начиная с 100 > 20). Этот 0 передается Double.init.

Вы хотите деление с плавающей запятой:

20.0/100.0

Вы также можете использовать 20.0/100, так как Double, разделенное на Int, является Double, или 20/100.0 по той же причине.

Ни один из них не вернет точно 0,20, поскольку это не может быть представлено Double. 20.0/100 равно 0,20000000000000001. Но я предполагаю, что это то, что вы ищете.

person Rob Napier    schedule 11.01.2021