Преобразование числа 1 в 1.00
По теме из базы знаний
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
В 1С нет типов с экспоненциальной формой представления дробных чисел.
Есть только епически точное число и положение десятичной точки в нем.
Поэтому не совсем понятен смысл вопроса. Расскажи какую конкретно задачу ты решаешь. Именно конечную цель, а не как ты там себе надумал ее достигать.
Есть только епически точное число и положение десятичной точки в нем.
Поэтому не совсем понятен смысл вопроса. Расскажи какую конкретно задачу ты решаешь. Именно конечную цель, а не как ты там себе надумал ее достигать.
(8) На самом деле была проблема в том, что в документе есть колонка табличной части с типом число (5,5) и в неё нужно было засунуть что то в духе 1.0000 или просто 1, вот и извращался как только мог думая как туда засунуть нужное мне число без изменения в типе колонки (реструктуризация двое суток). В итоге конечно пришлось поменять тип на (10,5) и всё взлетело (спустя двое суток). Я понимаю, что это абсолютно не проблема преобразования типов, но в ходе решения этого вопроса и появилась идея завести это обсуждение :)
(12)
По-прежнему непонятна суть проблемы. Нужно засунуть единицу? Засовывай единицу. Считаться будет правильно. Где проблема?
Нужно представлять как-то эдак? Представляй как надо.
(14) Считай, что сделал. Докажи, что не сделал. Приведи разницу в расчетах.
На самом деле была проблема в том, что в документе есть колонка табличной части с типом число (5,5) и в неё нужно было засунуть что то в духе 1.0000 или просто 1
По-прежнему непонятна суть проблемы. Нужно засунуть единицу? Засовывай единицу. Считаться будет правильно. Где проблема?
Нужно представлять как-то эдак? Представляй как надо.
(14) Считай, что сделал. Докажи, что не сделал. Приведи разницу в расчетах.
(32) Твоя проблема вообще никак не связана с типом числа в 1С. Она связана как раз с типами хранения данных в SQL. Просто SQL вообще не дал бы тебе записать единицу в колонку с типом Decimal(5,5), потому как единица выходит за пределы допустимого диапазона. А умная 1С просто преобразовала данные к минимально допустимым и наверняка выдала об этом предупреждение при рестуктуризации. Но они же для лохов, кто же их читает...
Ну так задаешь соответствующее описание типов:
КЧ = Новый КвалификаторыЧисла(15,2);
Массив = Новый Массив;
Массив.Добавить(Тип("Число"));
ОписаниеТиповЧисло = Новый ОписаниеТипов(Массив, , ,КЧ);
ТаблицаЗначений = Новый ТаблицаЗначений;
ТаблицаЗначений.Колонки.Добавить("Количество",ОписаниеТиповЧисло);
КЧ = Новый КвалификаторыЧисла(15,2);
Массив = Новый Массив;
Массив.Добавить(Тип("Число"));
ОписаниеТиповЧисло = Новый ОписаниеТипов(Массив, , ,КЧ);
ТаблицаЗначений = Новый ТаблицаЗначений;
ТаблицаЗначений.Колонки.Добавить("Количество",ОписаниеТиповЧисло);
Кстати прикольно тут обаружил непонятный глюк
Бл.....я - туплю я ж текст передаю а не число (((((
Тест1 = Число(Формат("1.01","ЧЦ=3; ЧДЦ=2")); // тут все ожидаемо на выходе 1,01
Тест2 = Число(Формат("1.01","ЧЦ=3")); // Ожидаю результат 1 на выходе 1.01 хотя если смотреть через конструктор форматной строки результат должен быть "1" , он же должен отбросить дробную часть
?
Бл.....я - туплю я ж текст передаю а не число (((((
(46) Еще раз. 1С потому и 1С, что разработчику не нужно знать о байтах и разных специфических типах данных. Тип числа только один и он динамической длины. Поэтому да - математика в 1С медленная. В разы медленнее, если сравнивать даже со скиптовыми языками с использованием "классических" типов. Но "классические" типы не подходят для финансовых вычислений, а реализовывать кучу числовых типов в 1С - оверкилл.
Суть в том, что в 99,99% случаев в приложениях 1С узкими местами производительности будут являться обращения к БД. Поэтому оптимизировать математику смысла нет от слова "совсем". Математика может стать узким местом только если реализовывать в 1С алгоритмы численных методов прикладной математики с большим количеством итераций (от сотни тысяч и выше) без обращений к БД. В продакшене для этого почти всегда используют внешние библиотеки. Хотя встречаются реализации и на 1С, когда не нужна большая точность и результат можно получить за приемлемое время на вменяемом количестве итераций.
В этом случае есть пара хитростей еще семерочных времен.
1) использовать вместо переменных реквизиты формы фиксированного размера (дает некоторый прирост при вычислениях за счет явного ограничения длины типа числа)
2) пихать куски алгоритмов в одну строку, снижая накладные расходы интерпретатора
Суть в том, что в 99,99% случаев в приложениях 1С узкими местами производительности будут являться обращения к БД. Поэтому оптимизировать математику смысла нет от слова "совсем". Математика может стать узким местом только если реализовывать в 1С алгоритмы численных методов прикладной математики с большим количеством итераций (от сотни тысяч и выше) без обращений к БД. В продакшене для этого почти всегда используют внешние библиотеки. Хотя встречаются реализации и на 1С, когда не нужна большая точность и результат можно получить за приемлемое время на вменяемом количестве итераций.
В этом случае есть пара хитростей еще семерочных времен.
1) использовать вместо переменных реквизиты формы фиксированного размера (дает некоторый прирост при вычислениях за счет явного ограничения длины типа числа)
2) пихать куски алгоритмов в одну строку, снижая накладные расходы интерпретатора
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)