Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Потеря точности при записи в Access 
:(
    Опции темы
mrHunter
Дата 31.7.2008, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 23.7.2007

Репутация: нет
Всего: нет



Тип данных в Access "двойное, с плавающей точкой". VS 2005 & C#. В программе использую тип double.
При использовании следующего кода: 
Код

cmd.CommandText = "INSERT INTO [Таблица] (a11) VALUES (?)";
cmd.Parameters.Add("@a11", OleDbType.Double);
cmd.Parameters["@a11"].Value = b; // b типа double
cmd.ExecuteNonQuery();


теряется точность. Число b = 239.9359237546474, записывается в БД на одну цифру короче: 239.935923754647.

Пробовал сделать тип данных в Access "Действительное", параметр в программе OleDbType.Numeric но выскакивает ошибка: "Несоответствие типов данных в выражении условия отбора". Преобразовывал число b к типу Decimal, всё равно не помогает.

Спасибо за помощь.

PM MAIL   Вверх
ZneP
Дата 1.8.2008, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 15.7.2008
Где: Россия, Москва

Репутация: нет
Всего: нет



Ставишь тип данных в Access "Действительное", а запись производишь не числом 239.9359237546474, а строкой "239,9359237546474"

То есть, преобразовываешь свое число в строку, а точку заменяешь запятой (обязательно).

еще кавычки добавь в команде на добавление:
cmd.CommandText = "INSERT INTO [Таблица] (a11) VALUES ('?')";
PM MAIL ICQ Skype   Вверх
Akina
Дата 1.8.2008, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Цитата(mrHunter @  31.7.2008,  10:54 Найти цитируемый пост)
записывается в БД на одну цифру короче

Тип данных в Access "двойное, с плавающей точкой" в соответствии с документацией - 15-циферный.

Цитата(mrHunter @  31.7.2008,  10:54 Найти цитируемый пост)
Преобразовывал число b к типу Decimal, всё равно не помогает.

Тип Decimal в Access имеет 2 вариации - либо целое в 29 цифр, либо с одной цифрой перед запятой и 28 цифрами после.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mrHunter
Дата 3.8.2008, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 23.7.2007

Репутация: нет
Всего: нет



Цитата

Ставишь тип данных в Access "Действительное", а запись производишь не числом 239.9359237546474, а строкой "239,9359237546474"


Преобразовать это число в строку корректно тоже не получается... На удивление, тоже идет округление... Уж чего только не пробовал...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.1185 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.