1. serg__k 78 28.12.16 16:29 Сейчас в теме

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

В УТ 11.1.10.199 вижу в запросе такой код:
КОГДА ДД.Количество > 0. ТОГДА ""Потребление""

Зачем нужна точка после 0? Кто может подсказать?
Ответы
Избранное Подписка Сортировка: Древо
3. spacecraft 28.12.16 16:52 Сейчас в теме
(1) не боги горшки обжигает. Бональные опечатка. Работает только из за того, что воспринимает как 0.0, что равнозначно просто 0
5. serg__k 78 28.12.16 17:11 Сейчас в теме
(3) Встречается не единожды в коде, и не только в запросах; например:


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

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


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

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

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

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


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

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

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

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

Код типовых пишет не один программист. Возможно один из программистов хорошо знает С++. Думает по стандартам С++.
Итоговый фрагмент кода особо не проверяют досконально. Пропускают через систему тестирования. Тестирование проходит и хорошо.
serg__k; herfis; v3rter; +3 Ответить
2. alex-l19041 9 28.12.16 16:50 Сейчас в теме
а если убрать эту точку, что-то меняется ?
4. serg__k 78 28.12.16 17:01 Сейчас в теме
(2) Работает и с точкой, и без нее.
Конструктор запроса точку не видит.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Разработчик 1С
Москва
зарплата от 100 000 руб. до 160 000 руб.
Полный день

Программист 1С
Москва
зарплата от 80 000 руб.
Полный день

Консультант-аналитик 1С
Санкт-Петербург
Полный день

Консультант-аналитик 1С
Москва
зарплата от 120 000 руб. до 120 000 руб.
Полный день

Удаленный ИТ-журналист
Санкт-Петербург
По совместительству