Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 0.0 или просто 0?  [new]
amadeus
Member

Откуда:
Сообщений: 33
Некоторые, задавая константные значения нецелочисленным переменным, пишут: "variable := 0.0;" или "variable := 1.0". Есть под этим какое-то основание или это дань привычке?
9 июн 19, 20:29    [21905514]     Ответить | Цитировать Сообщить модератору
 Re: 0.0 или просто 0?  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9734
баг
9 июн 19, 20:46    [21905521]     Ответить | Цитировать Сообщить модератору
 Re: 0.0 или просто 0?  [new]
amadeus
Member

Откуда:
Сообщений: 33
Что же за баг?
9 июн 19, 20:56    [21905526]     Ответить | Цитировать Сообщить модератору
 Re: 0.0 или просто 0?  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9734
amadeus
Что же за баг?

Опс, пропустил НЕ (целочисленное).
Конечно для читаемости лучше писать с ".0". Лучше видно, что присваивается значение с плавающей запятой переменной типа с плавающей запятой.
9 июн 19, 21:39    [21905535]     Ответить | Цитировать Сообщить модератору
 Re: 0.0 или просто 0?  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6475
amadeus,

думаю, что это идет из-за унификации записи, чтобы не надо было думать в разных ситуациях. Поясню. Есть языки, в которых выражения 1.0*x и 1*x дадут разные значения. Т.к. там выражение приводится к тому же типу, что и предыдущий аргумент. И если он будет integer, то и всё выражение будет integer. Вот программисты что бы не думать каждый раз о нюансах, пишут сразу же указание компилятору, что это float. Пишут в виде точки
9 июн 19, 22:18    [21905550]     Ответить | Цитировать Сообщить модератору
 Re: 0.0 или просто 0?  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4500
amadeus,

сталкивался с подобной проблемой при передачи значения в БД. Некоторые провайдеры для некоторых СУБД для типа decimal требуют наличие точки. Т.е. в строчке должно быть "2." таким образом, если на клиенте формируется строчка формулы, такое может иметь место...
9 июн 19, 22:28    [21905551]     Ответить | Цитировать Сообщить модератору
 Re: 0.0 или просто 0?  [new]
Gator
Member

Откуда: Москва
Сообщений: 14358
Это просто явное указание типа литерала. Целое или вещественное. чтобы не забыть через 10 лет, какого типа у тебя переменная.

И жалко, что в Delphi нет чисел с фиксированной точкой, вроде dec(30, 15)
9 июн 19, 22:51    [21905556]     Ответить | Цитировать Сообщить модератору
 Re: 0.0 или просто 0?  [new]
amadeus
Member

Откуда:
Сообщений: 33
Всем спасибо.
9 июн 19, 23:04    [21905559]     Ответить | Цитировать Сообщить модератору
 Re: 0.0 или просто 0?  [new]
rgreat
Member

Откуда:
Сообщений: 5078
Gator
И жалко, что в Delphi нет чисел с фиксированной точкой, вроде dec(30, 15)
В базе есть: currency.

Ну и конечно https://github.com/rvelthuis/DelphiBigNumbers
9 июн 19, 23:54    [21905576]     Ответить | Цитировать Сообщить модератору
 Re: 0.0 или просто 0?  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1459
Я иногда использую умножение на константу 1.0 что бы привести значение к вещественному типу.
В основном это когда значение integer хочу вывести через format() используя форматирование для вещестенных чисел, в частности, разбитие числа на триады, что бы проще было читать большие числа.

Как-то так:

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

Результат: 1 000
10 июн 19, 03:52    [21905601]     Ответить | Цитировать Сообщить модератору
 Re: 0.0 или просто 0?  [new]
Exteris
Member

Откуда: Новосибирск
Сообщений: 977
Некоторые БД вернут сильно разные результаты выполнения запросов -
select 100/(1+20/100) from sometable
и
select 100/(1+20.0/100) from sometable
.
10 июн 19, 08:04    [21905645]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить