|
Загрузка из exel неправильная дробная часть | ☑ | ||
---|---|---|---|---|
0
Михаил Луппов
28.04.14
✎
17:47
|
Добрый день. Возник вопрос по загрузке из Exel. При чтении из файла неправильно читает цифру после запятой должно быть 8.2, а получаю 8.1999999999999. Соответственно следующее число вместо 8.3 получаю 8.3000000000001. При этом до этой цифры и после ошибка возникает в произвольном порядке. Заранее спасибо.
Сетевая 1С:Предприятие 8.2 (8.2.17.169) |
|||
1
vicof
28.04.14
✎
17:50
|
Это святые цифры для 1С. Ими нельзя просто так воспользоваться в богомерзком экселе.
|
|||
2
Wobland
28.04.14
✎
17:50
|
а на здоровье. давай свой вопрос
|
|||
3
Wobland
28.04.14
✎
17:51
|
(1) подавился пивом
|
|||
4
Мыш
28.04.14
✎
17:52
|
(0) Это не только для экселя. Из другой базы 1С то же самое будет.
|
|||
5
vicof
28.04.14
✎
17:52
|
(3) Похлопать?
|
|||
6
Wobland
28.04.14
✎
17:53
|
(5) браво! бис!
|
|||
7
Мыш
28.04.14
✎
17:53
|
Надо просто запомнить. Для всех дробных чисел в обязательном порядке использовать Окр()
|
|||
8
mdocs
28.04.14
✎
17:57
|
Что в экселе хранится, то ты и получаешь. Бери не Value, а Text если надо загружать так как показывает эксель.
|
|||
9
Мыш
28.04.14
✎
17:59
|
(8) Борис, ты не прав. Это особенности передачи чисел через COM.
>> Помните, что не все десятичные числа имеют двоичное представление с плавающей запятой. Например, число «0,2» будет представлено как «0,200000003» в одинарной точности. |
|||
10
Михаил Луппов
28.04.14
✎
18:05
|
Спасибо за ответы пока грешу на глюки компоненты exel до этого год вопросов не возникало.
|
|||
11
Мыш
28.04.14
✎
18:09
|
(10) Ни эксель ни 1С не при делах. Числа преобразуются при передаче. Потому на некоторых значениях такой результат.
|
|||
12
Kookish
28.04.14
✎
18:32
|
Применение операции == для вещественных чисел. Новички, объяснять все причины долго, так что запомните как аксиому: операцию == можно применять только к целым числам, а вещественные всегда сравниваются путём вычисления их разницы и проверки, что она по модулю меньше определённого порога.
|
|||
13
Мыш
28.04.14
✎
18:38
|
(12) Простите, где в 1С применяется операция "==" ?
|
|||
14
Torquader
28.04.14
✎
19:39
|
(0) А куда вы эти значения пишете ? Если в реквизиты документа, то система автоматом выполнит округление, и вы ничего не заметите.
P.S. передача данных по OLE идёт через тип double - можно про него почитать, чтобы понять, как он хранит дробные числа. |
|||
15
Михаил Луппов
29.04.14
✎
09:49
|
Всем спасибо помогла замена Value на Text. В колонке хранились переменные типа строка.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |