|
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" - это уже можно сказать что целое число с разделителями триад
.
писал как-то относительно недавно преобразование строки в число, бо в экселях как раз вот были такие заморочки.
функция получилась, не идеальная, но почти все отрабатывала
|
|
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой