2013-09-16 2 views
1

Я загружаю книгу валютных курсов через filehandler в VB.net через System.Data.OleDb.OleDbConnection.Datatable, загруженный с Microsoft.ACE.OLEDB.12.0, имеет более высокую точность, чем рабочая книга Excel

При просмотре ставок на листе Excel я вижу 0.55865921787709500000.
Просмотр той же скорости в datatable в режиме отладки, я вижу 0.55865921787709480000.

Под Excel, десятичные разряды устанавливаются 20 - кажется, просто подушечка из нулей мимо десятичной позиции 15.

Я пытался писать ячейки в текстовый файл (тот же результат «+500000») чтение/,
Попробовал сохранить книгу как текстовый файл с разделителями-запятыми - то же самое «500000».

Лист скорости создается с другого веб-сайта. Я попытался добавить 16-ю цифру к рабочему листу, но после того, как я выхожу из ячейки, он возвращается к нулю. Я знаю, что Excel имеет предел точности в 16 цифр. В этом случае он, похоже, хранит больше.

Есть ли способ заглянуть в фактическое сохраненное значение в книге - кроме изучения данных?

+0

Что вы можете изменить? можно ли увидеть код, который вы можете изменить? – Malachi

+2

По дизайну: http://en.wikipedia.org/wiki/Numeric_precision_in_Microsoft_Excel –

+0

Я могу изменить код импорта, чтобы обрезать лишние цифры. Я спрашиваю, почему Excel предпочитает хранить более 15 значащих цифр и скрывать # 16, когда вы просматриваете цифры в Excel. Тип данных, полученный из чтения OLEdb книги, показывает 16 цифр, показывает рабочую книгу 15. – user652411

ответ

0

В Excel хранится более 15 значащих цифр - в зависимости от того, какая система создала исходный документ Excel. В этом случае документ был подготовлен Crystal Reports. «Дополнительные» значащие цифры можно просмотреть, используя соединение OLEDB с электронной таблицей Excel или просмотрев его через версию документов Google Docs.
В этом конкретном случае мне пришлось сделать SQL-хранимые ставки в соответствии с таблицей. Я преобразовал каждую скорость в десятичную строку и строку. Я использовал строку для определения периода в скорости и начала подсчета последовательных нулей, которые появляются после десятичного числа. Этот счетчик был добавлен к 15 в виде числа цифр в системном раунде десятичной дроби. Округленное число соответствует показанным на экране данным в Excel.

Смежные вопросы