У меня есть класс, представляющий конкретную таблицу базы данных. Некоторые свойства этого класса, а также некоторые поля в таблице базы данных имеют тип double.
Здесь, в классе, вы видите, что некоторые свойства имеют 1 значащую цифру, например. T12, T13, T18, T19 (0,8, 12,1 и т. Д.).

Однако, когда я выполняю вставку этого класса в таблицу базы данных, Linq2Db
производит такой запрос:

Когда я смотрю в таблицу базы данных, поля содержат правильные однозначные значения:

Я прекрасно знаю, как числа с плавающей запятой представляются в двоичном формате. Я уже прочитал статью Почему числа с плавающей точкой неточны? .
Мои вопросы:
Почему представление двойного типа в классе (T12 = -0,8) отличается от представления после того, как им манипулирует Linq2Db (T12 = -0,800 ... 004)?
Безопасно ли сохранять такие двойные значения в базе данных? (Я бы хотел, чтобы не было неточных значений)
Почему существует разница между значениями в запросе и значениями в таблице базы данных?
Редактировать 1:
Это результат запроса к базе данных. 15 значащих цифр (все 0) и 17 значащих цифр (экран выше). При доступе не может отображаться более 15 цифр.

Редактировать 2:
Decimal 0.8
Class Double 0.8
Floating-Point Double 0.8000000000000000444089209850062616169452667236328125
Floating-Point Single 0.800000011920928955078125 (for comparison)
SQL Query 0.80000000000000004 (!) => 17 digits after point (why?)
MS Access 0.800000000000000 = 0.8 => 15 digits after point
Почему тип double в классе может быть 0,8, но в базу данных вставлено то же значение без каких-либо манипуляций или арифметических операций, как 0,80000000000000004? Что с ним делает Linq2Db?