|
v7: Непонятка при чтении файла xls | ☑ | ||
---|---|---|---|---|
0
zenon46
04.03.22
✎
16:45
|
Доброго дня!
Столкнулся с непонятной проблемой при чтении файла xls, в ячейке xls записано значение 2,3 (число) в 1С при чтении залетает 2.29999999999999 - как так получается ? И есть еще например 5,1 в xls, прилетает 4.099999999. Может кто сталкивался ? |
|||
1
ДаЛадно
04.03.22
✎
16:46
|
Ну округли
|
|||
2
zenon46
04.03.22
✎
17:04
|
(1) это понятно, что так можно, вопрос почему так происходит, должна же быть причина, да и огульно округлять тоже нельзя, можно вляпаться.
|
|||
3
Garykom
гуру
04.03.22
✎
17:07
|
||||
4
Garykom
гуру
04.03.22
✎
17:08
|
"В 1С для чисел используется тип данных Decimal. Тип данных decimal может хранить не более 38 разрядов. Причем все значимые, т.е. без потери точности в пределах допустимых значений.
В Excel для дробных чисел использует тип данных float. Тип float сохраняется как четырехбайтовое число одиночной точности с плавающей запятой. Он представляет 32-разрядное значение одиночной точности в формате IEEE 754.Самое большое число, которое может быть представлено типом float, — это 3,4E + 38 (положительные или отрицательные) с точностью около 7 разрядов. Приблизительные числовые типы данных не хранят точных значений, заданных для многих чисел. Вместо этого они хранят очень хорошее приближение для этих значений. Для многих приложений различие между заданным значением и хранимым приближением несущественно. Однако в некоторых случаях это различие становится ощутимым. Вот при приведении типов получаются погрешности. В качестве решения можно попробовать: В Excel перевести все числа в строку и передавать стройкой, с последующим приведением к числу уже в 1С;" |
|||
5
zenon46
04.03.22
✎
17:10
|
(4) спасибо, не знал такого нюанса!
|
|||
6
Kigo_Kigo
04.03.22
✎
17:26
|
МоеЧисло = Число(СтрЗаменить(МоеЧисло(",",".")))
|
|||
7
НЕА123
04.03.22
✎
17:43
|
(0)
>в ячейке xls записано значение 2,3 (число) в 1С при чтении залетает 2.29999999999999 какое значение. залетает через дверь, окно или... уточнить бы. |
|||
8
Злопчинский
04.03.22
✎
22:43
|
(6) не пойдет.
число в виде 23,787,000-23 даст неверно |
|||
9
Злопчинский
04.03.22
✎
22:56
|
вот например
"67,051" - в строковой записи - это дробное число или целое с разделителем триад в виде ЗПТ ? "67,051,234" - это уже можно сказать что целое число с разделителями триад . писал как-то относительно недавно преобразование строки в число, бо в экселях как раз вот были такие заморочки. функция получилась, не идеальная, но почти все отрабатывала |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |