Помогите! Какая-то чертовщина с Double переменной!

swift

#1

Ребята, я разочарован в компьютерах. Они не умеют считать :tired_face:
Первая проблема:
Почему происходит такая бесовщина, а точнее как это исправить:


Почему m = 1. 099999999999994 , а не 1.1? И почему n = 0.01000000000000001 , а не 0.01?
И в print’e ‘n’ отображается корректно, а ‘m’ без четверки в конце.

Вторая проблема:


var i = 0.0001
print(i) // пишет: “0.0001”
Теперь i = 0.00001
print(i) // пишет: “1e-05” ; Ооооокей, это я понять еще как-то могу понять. “05” - кол-во нулей перед единицей. Это типа оптимизация данных и т.д.
Тогда почему если i равно, к примеру, 0.00004000001 ,то “print(i)” выводит “4.000001e-05” - нули после четверки не кодирует, перед четверкой ставится запятая, короче после первой цифры отличной от нуля все остается неизменным (за исключением постфикса “e-05” в конце)

Я создаю калькулятор, и мне это ПРИНЦИПИАЛЬНО важно!
Буду безмерно благодарен, если покидаете статеек или объясните, почему и по какому принципу это происходит и как это исправить


#2

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.