0.0 или просто 0?

amadeus
Дата: 09.06.2019 20:29:58
Некоторые, задавая константные значения нецелочисленным переменным, пишут: "variable := 0.0;" или "variable := 1.0". Есть под этим какое-то основание или это дань привычке?
Dmitry Arefiev
Дата: 09.06.2019 20:46:39
баг
amadeus
Дата: 09.06.2019 20:56:29
Что же за баг?
Dmitry Arefiev
Дата: 09.06.2019 21:39:50
amadeus
Что же за баг?

Опс, пропустил НЕ (целочисленное).
Конечно для читаемости лучше писать с ".0". Лучше видно, что присваивается значение с плавающей запятой переменной типа с плавающей запятой.
Кроик Семён
Дата: 09.06.2019 22:18:45
amadeus,

думаю, что это идет из-за унификации записи, чтобы не надо было думать в разных ситуациях. Поясню. Есть языки, в которых выражения 1.0*x и 1*x дадут разные значения. Т.к. там выражение приводится к тому же типу, что и предыдущий аргумент. И если он будет integer, то и всё выражение будет integer. Вот программисты что бы не думать каждый раз о нюансах, пишут сразу же указание компилятору, что это float. Пишут в виде точки
Gerasimenko
Дата: 09.06.2019 22:28:06
amadeus,

сталкивался с подобной проблемой при передачи значения в БД. Некоторые провайдеры для некоторых СУБД для типа decimal требуют наличие точки. Т.е. в строчке должно быть "2." таким образом, если на клиенте формируется строчка формулы, такое может иметь место...
Gator
Дата: 09.06.2019 22:51:41
Это просто явное указание типа литерала. Целое или вещественное. чтобы не забыть через 10 лет, какого типа у тебя переменная.

И жалко, что в Delphi нет чисел с фиксированной точкой, вроде dec(30, 15)
amadeus
Дата: 09.06.2019 23:04:17
Всем спасибо.
rgreat
Дата: 09.06.2019 23:54:52
Gator
И жалко, что в Delphi нет чисел с фиксированной точкой, вроде dec(30, 15)
В базе есть: currency.

Ну и конечно https://github.com/rvelthuis/DelphiBigNumbers
fraks
Дата: 10.06.2019 03:52:11
Я иногда использую умножение на константу 1.0 что бы привести значение к вещественному типу.
В основном это когда значение integer хочу вывести через format() используя форматирование для вещестенных чисел, в частности, разбитие числа на триады, что бы проще было читать большие числа.

Как-то так:

i := 1000;
WriteLn( format('Результат: %.0n', [ i * 1.0]) );

Результат: 1 000