Точка после 0 при сравнении, зачем?

1. serg__k (serg__k) 78 28.12.16 16:29 Сейчас в теме
В УТ 11.1.10.199 вижу в запросе такой код:
КОГДА ДД.Количество > 0. ТОГДА ""Потребление""

Зачем нужна точка после 0? Кто может подсказать?
Ответы
2. Алекс Кон (alex-l19041) 9 28.12.16 16:50 Сейчас в теме
а если убрать эту точку, что-то меняется ?
3. Oleg Space (spacecraft) 28.12.16 16:52 Сейчас в теме
(1) не боги горшки обжигает. Бональные опечатка. Работает только из за того, что воспринимает как 0.0, что равнозначно просто 0
4. serg__k (serg__k) 78 28.12.16 17:01 Сейчас в теме
(2) Работает и с точкой, и без нее.
Конструктор запроса точку не видит.
5. serg__k (serg__k) 78 28.12.16 17:11 Сейчас в теме
(3) Встречается не единожды в коде, и не только в запросах; например:


Объект.Товары[Товар.НомерСтроки-1].СуммаНДС = ?(Раздел.СуммаНДС > 0., Товар.СуммаНДС, 0.);

Формат(Замер/1000., "ЧДЦ=3; ЧН=; ЧГ=")


В УТ 11.3 а же история...... Не похоже на опечатку
6. Oleg Space (spacecraft) 28.12.16 17:27 Сейчас в теме
(5) это маньяк программист, который пришел с других языков программирования, где есть жесткая типизация. Вот и ставит где может точки :)
Как такой вариант?
В любом случае в 1С нет жесткой типизации. И числа не делятся на целые и вещественные. И конструкция 0. равна просто 0
7. Роберт В е р т и н с к и й (v3rter) 28.12.16 17:27 Сейчас в теме
Разве что неявное указание, что 0 - значение не целое, а с фиксированной точкой.

Да, знаю, если суммировать больше количество значений с плавающей точкой, то накапливается погрешность в районе нескольких последних знаков и правильное сравнение с нулем будет выглядеть как сравнение числа (или его модуля) со значением допустимой погрешности, но в данном случае соглашусь с
(5)
поскольку 1С 8 оперирует данными с фиксированной точкой.
8. Oleg Space (spacecraft) 28.12.16 17:44 Сейчас в теме
(7)
а = 1/6;
а = а*6;
Сообщить(а);
Сообщить(а = 1);
Сообщить(а = 1.);
...Показать Скрыть

результат предсказуем?

С нулем не привожу, т.к. там всегда 0 будет.
9. serg__k (serg__k) 78 29.12.16 09:16 Сейчас в теме
(8)
а = 1/6;
а = а*6;
Сообщить(а);
Сообщить(а = 1);
Сообщить(а = 1.);


На выходе получаем:
1,000000000000000000000000002
Нет
Нет

Все таки не понятно использование точки, - не в теоретическом, а в практическом смысле.....
10. Oleg Space (spacecraft) 29.12.16 09:39 Сейчас в теме
(9) еще раз повторю, что в практическом смысле использование точки в таком виде для 1С нет никакого смысла.
Вот для С++ это имеет смысл. Причем очень важный.
Вот такой код на С++ :
int a = 100;
float b = a/1000.;

Чему будет равна переменная b?
А если убрать точку?
Это совсем два разных результата получается.

В 1С это всегда один результат.

Код типовых пишет не один программист. Возможно один из программистов хорошо знает С++. Думает по стандартам С++.
Итоговый фрагмент кода особо не проверяют досконально. Пропускают через систему тестирования. Тестирование проходит и хорошо.
serg__k; herfis; v3rter; +3 Ответить
Оставьте свое сообщение