Часто в коде программ числа записываются в виде цифры с .0 на конце. Например: C: double s = 1.0 / 6.0 Delphi: var d: Single begin d := 16.0 + 1.0 end JS: var t = 90.0 Возможны примеры и на других языках, но для начала предлагаю ограничиться этими тремя Какой смысл несет добавление .0 в данных случаях? В каких случаях .0 можно опускать, а в каких он меняет логику поведения программы?
Ответ Если говорить в общем, то добавление .0 к числу, изменяет его тип и превращает его из целого, в дробное (число с плавающей точкой). Такое изменение типа числа влияет на то, как оно будет храниться в памяти и на то, как и какие операции с ним могут выполняться. В JS добавление .0 абсолютно лишено всякого смысла, т.к. там все числа изначально являются дробными. В Delphi так же не возникает необходимости вручную приводить целые числа к дробным, т.к. компилятор замечательно справляется с этим самостоятельно, там где это нужно. Операция деления двух целых всегда возвращает дробное число и его невозможно по ошибке присвоить целому. Для особых случаев, когда надо выполнить целочисленное деление, есть специальный оператор div. А вот в Си и некоторых других языках, и для целочисленного, и для обычного деления используется один и тот же оператор деления / который ведёт себя по разному, в зависимости от типа операндов: если оба операнда целые, то и в результате деления будет целое (целочисленное деление): double i = 5 / 2 даст 2.0 (дробная часть результата операции отбрасывается, получается целое число, которое затем приводится к целевому типу double). если хоть один из операндов является дробным, то и результат будет дробным: double i = 5 / 2.0 даст 2.5. В Си, вместо .0 перед числом можно указывать тип числа с плавающей точкой (float/double), т.е. выполнять приведение типа: double i = 5 / (double) 2 такая конструкция используется, если операнд не число, а переменная целочисленного типа: int k = 2 double i = 5 / (double) k // --> i = 2.5