|   |   | 
| 
 | v7: Округление в ТИС | ☑ | ||
|---|---|---|---|---|
| 0
    
        Санта Клаус 22.06.20✎ 21:34 | 
        Ребята! Впервые заметил такой баг: 
 ТаблИтогов.СуммаБезНДС*КоэффСписания = 117.415 Окр(ТаблИтогов.СуммаБезНДС*КоэффСписания,2,1) = 117.41 ? Однако, если подставить в код (или в отладке) ЯВНО число Окр(117.415,2,1) = 117.42 как и должно быть по математике *********************** Такая конструкция все равно дает 117.41 ТекБезНДС = ТаблИтогов.СуммаБезНДС*КоэффСписания; РегПартии.СуммаБезНДС = Окр(ТекБезНДС,2,1); = 117.41 Что за ерунда? Спасибо | |||
| 1
    
        Cthulhu 22.06.20✎ 21:37 | 
        не ерунда.
 ТаблИтогов.СуммаБезНДС*КоэффСписания = 117.414999999999999999 а не 117.415 | |||
| 2
    
        Санта Клаус 22.06.20✎ 21:39 | 
        (1) два раза округлять тогда можно, получается?     | |||
| 3
    
        Санта Клаус 22.06.20✎ 21:41 | 
        если на калькуляторе разделить сумму/кол, то 117.415 и получается, откуда хвост еще?     | |||
| 4
    
        Санта Клаус 22.06.20✎ 21:42 | 
        ладно, понял, а делать то что?)     | |||
| 5
    
        Злопчинский 22.06.20✎ 21:43 | 
        (3) причем сум/кол к (0)..?     | |||
| 6
    
        Злопчинский 22.06.20✎ 21:45 | 
        Смотреть из (0) в отладчике значения множителей с масимальной точностью, доступной в 1С, это вроде 22 знака после ЗПТ     | |||
| 7
    
        Санта Клаус 22.06.20✎ 21:48 | 
        (5) я понял сейчас, что с коэф в периоде связано, но почему он тогда мне обрезает до трех знаков
 2583,13 * 0.04545454545454545455 = 117.4149999999999 а выдает 117.415 | |||
| 8
    
        Санта Клаус 22.06.20✎ 21:57 | 
        т.е когда произведение переменных ТаблИтогов.СуммаБезНДС*КоэффСписания - округляет до трех знаков,
 если подставить хотя бы в один из множителей число, то не округляет до трез знаков - весь хвост выдает, что и надо, чтобы потом округлить. И где это зашито, в платформе что ли? | |||
| 9
    
        Злопчинский 22.06.20✎ 22:13 | 
        (8) могу ошибаться, но почитай правила определения точности результата.
 Попробуй наоброт ради прикола КоэффСписания*ТаблИтогов.СуммаБезНДС И каковы параметры точности у ТаблИтогов.СуммаБезНДС | |||
| 10
    
        Злопчинский 22.06.20✎ 22:14 | 
        (7) "а выдает 117.415"
 куда выдает? где выдает? результат чему-то присваивается - смотри принимающую точность. | |||
| 11
    
        Санта Клаус 22.06.20✎ 22:16 | 
        (10) в отладчике результат умножения     | |||
| 12
    
        Санта Клаус 22.06.20✎ 22:16 | 
        думаю сделать промежуточное округление до трех знако и потом до двух уже     | |||
| 13
    
        Санта Клаус 22.06.20✎ 22:18 | 
        (10) в отладчике не 117.4149999999999, а 117.415     | |||
| 14
    
        Санта Клаус 22.06.20✎ 22:23 | 
        //ресурсы
 РегПартии.Количество = Окр(ТаблИтогов.Количество *КоэффСписания,5,1); РегПартии.СуммаУпр = Окр(ТаблИтогов.СуммаУпр *КоэффСписания,2,1); РегПартии.СуммаРуб = Окр(ТаблИтогов.СуммаРуб *КоэффСписания,2,1); РегПартии.СуммаПлат = Окр(ТаблИтогов.СуммаПлат *КоэффСписания,2,1); ТекСуммаБезНДС = Окр(ТаблИтогов.СуммаБезНДС*КоэффСписания,3,1); //+добавил = 117.415 РегПартии.СуммаБезНДС = Окр(ТекСуммаБезНДС,2,1); //+изменил = 117.42 - что и нужно вместо 117.41 | |||
| 15
    
        Санта Клаус 22.06.20✎ 22:26 | 
        не будет ли последствий? Вроде как на первый взгляд - нет     | |||
| 16
    
        Cthulhu 22.06.20✎ 23:06 | 
        (14): Окр - лишнее. запишется де-факто округленное согласно точности ресурса.     | |||
| 17
    
        Злопчинский 22.06.20✎ 23:35 | 
        (14)   //+изменил   = 117.42 - что и нужно вместо 117.41
 то есть 117.41499999 ты решил округлить до 117.42? | |||
| 18
    
        Cthulhu 22.06.20✎ 23:50 | 
        // Санта, на вот тебе - наслаждайся... и делай выводы:
 ЦелДлинаМаксимум=99; ДрДлинаМаксимум=77; // а можно и на форму Сообщить("*** Тестирование (макс.цел="+ЦелДлинаМаксимум+"/макс.др="+ДрДлинаМаксимум+":","i"); ЦелЧасть=""; Для ЦелЧастьДлина=1 По ЦелДлинаМаксимум Цикл ЦелЧасть=ЦелЧасть+Прав(""+ЦелЧастьДлина,1); ДрЧасть=""; Для ДрЧастьДлина=1 По ДрДлинаМаксимум-ЦелЧастьДлина Цикл ДрЧасть=ДрЧасть+Прав(""+ДрЧастьДлина,1); ЧислоСтрокой=ЦелЧасть+"."+ДрЧасть; ЧислоЧислом=Число(ЧислоСтрокой); Если ""+ЧислоЧислом+?(Прав(ДрЧасть,1)="0","0","")<>ЧислоСтрокой Тогда Сообщить(СимволТабуляции+"Число "+ЧислоСтрокой+" ("+(ЦелЧастьДлина +ДрЧастьДлина)+","+ДрЧастьДлина+") отличается от его представления " +ЧислоЧислом+?(Прав(ДрЧасть,1)="0","0","")+" ...","."); Прервать; КонецЕсли; КонецЦикла; КонецЦикла; | |||
| 19
    
        Aleksey 22.06.20✎ 23:50 | 
        (15) При определенных обстоятельствах при списание в 0 КоэффСписания может быть отличным от 1. Поэтому обычно сначала сравнивают на равенство, и только если показатели не равны используют КоэффСписания     | |||
| 20
    
        tgu82 23.06.20✎ 08:51 | 
        Округление это порой просто задалбывает
 Особенно когда выписывается УПД в котором по товару несколько партий списывается с разными ГТД. И тогда начинается расхождение на 1 копейку. И пляска с бубном чтоб это поправить. Причем иногда все замечательно а иногда эта копейка вылезает. | |||
| 21
    
        Санта Клаус 23.06.20✎ 09:26 | 
        (20) в том то и дело, и править типовые механизмы округления как то не хочется и как кажется - это неправильно     | |||
| 22
    
        Санта Клаус 23.06.20✎ 09:30 | 
        (17) если вычислить цену партии через деление суммы на количество, оставшееся на данный момент, то результат 117.416;
 если вычислять через КоэффСписания, как в глСписаниеПартийТМЦ , то результат 117.415 - в отладке и 117.41499999 - на калькуляторе | |||
| 23
    
        Санта Клаус 23.06.20✎ 09:32 | 
        +поэтому, вроде как, 117.416 округлить бы до 117.42 как показывает везде, кроме как в глСписаниеПартийТМЦ     | |||
| 24
    
        Злопчинский 23.06.20✎ 11:39 | 
        (23) глСписаниеПартийТМЦ
 не надо ничего там исправлять... | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |