Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Как засунуть в Access число типа double


Автор: mrHunter 3.8.2008, 15:45
Ну что может быть проще? Казалось бы... Есть число типа double. Надо его сначала записать в БД Access, а потом прочитать. И сделать это так, чтобы прочитанное число из БД было тем же числом, которое мы и записывали, вернее, то которое было в программе...

Неужели эту задачу невозможно решить???

Автор: jonie 4.8.2008, 22:49
ну запиши число как текст. кто тебе это мешает сделать?

Автор: Akina 4.8.2008, 23:09
Нельзя записАть число в БАЗУ. Это теоретически невозможно. И желание проделать это говорит о некоторой необразованности в этой области.
Записывать числа можно в таблицы базы данных. Создайте в БД таблицу, содержащую минимум одно поле типа Double, и записывайте туда нужные данные. А потом читайте.

Автор: mrHunter 5.8.2008, 06:55
Цитата(Akina @ 4.8.2008,  23:09)
Записывать числа можно в таблицы базы данных. Создайте в БД таблицу, содержащую минимум одно поле типа Double, и записывайте туда нужные данные. А потом читайте.

А совет "Создайте в БД таблицу, содержащую минимум одно поле типа Double"... при том что в Access нет такого типа говорит о большой образованности...

Добавлено через 4 минуты и 19 секунд
Цитата(jonie @ 4.8.2008,  22:49)
ну запиши число как текст. кто тебе это мешает сделать?

Да пробовал уже...

Попробуй число типа double 239.9359237546474 преобразовать в строку... Любое преобразование в строку "режет" число... Данное число (для примера) урезается на 1 цифру при преобразовании к строке, т.е. получаем "239.935923754647" (всего 15 цифр). И что бы я ни пробовал, всегда в преобразуемой строке получается не больше 15 цифр...

Автор: Bishop 5.8.2008, 11:52
mrHunter,
уже имеем 4 (четыре) ваших темы с одним и тем же вопросом:
  • http://forum.vingrad.ru/forum/topic-221497.html
  • http://forum.vingrad.ru/forum/topic-221602.html
  • http://forum.vingrad.ru/forum/topic-222721/kw-access-double.html
  • http://forum.vingrad.ru/forum/topic-223049.html
Как это понимать? Как невежество? Как неуважение к сообществу?
Во второй (по списку) теме мною вам был дан исчерпывающий ответ. Цитирую: «Учите мат. часть». Там же я рекомендовал вам внимательнее прочитать http://msdn.microsoft.com/en-us/library/system.double.aspx. Вы этого, очевидно, не сделали. Спрашивается, вы программируете или колдуете?
Ладно, попробую пояснить доходчивее, на пальцах (кто, если не я?). Читаем в документации:
Цитата
Remember that a floating-point number can only approximate a decimal number, and that the precision of a floating-point number determines how accurately that number approximates a decimal number. By default, a Double value contains 15 decimal digits of precision, although a maximum of 17 digits is maintained internally.
   (http://translate.google.com/)

Т.е. точность типа double — 15 значащих цифр. В вашем числе (239.9359237546474) — 16 значащих цифр. 16 больше 15, факт, следовательно ваше число округляется до 15 цифр. Что тут неясно? Также в приведенном отрывке можно прочесть, что внутренния точность типа достигает 17 цифр, что можно наблюдать в отладчике, и, по-видимому, это вводит вас в заблуждение. Просто поверьте, что та внутренняя точность, она совсем не точная и используется для служебных, так сказать, целей. Картинка по теме:
http://ipicture.ru/
Итак, главное что вы должны понять (или поверить) — точность не теряется. Точка. Не беспокойтесь по этому поводу.
Если для ваших задач недостаточно точности типа double, используйте тип decimal.

Автор: Akina 5.8.2008, 15:49
Цитата(mrHunter @  5.8.2008,  07:55 Найти цитируемый пост)
А совет "Создайте в БД таблицу, содержащую минимум одно поле типа Double"... при том что в Access нет такого типа говорит о большой образованности...

Тип Double в переводе на русский (Вы же искали на русском языке это английское слово, не так ли? до чего же странно, что не нашли) звучит как 

Тип данных = Числовой;
Размер поля = Двойное с плавающей точкой.

Надеюсь, теперь Вы сможете его найти.

Автор: jonie 5.8.2008, 18:09
Цитата

Если для ваших задач недостаточно точности типа double, используйте тип decimal.
ну а если decimal не хватает, используйте длинную арифметику..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)