Как я могу «обрезать» двойное значение C #, которое будет сохранено как в базе данных sqlite?

Я заметил, что когда я сохраняю двойное значение, например, x = 0.56657011973046234 , в базе данных sqlite, а затем извлекаю его позже, я получаю ] y = 0,56657011973046201 . Согласно sqlite spec и .NET spec (ни один из которых я изначально не удосужился прочитать :), это ожидаемо и нормально.

Моя проблема в том, что высокая точность не важно, мое приложение имеет дело с пользователями, которые вводят / выбирают двойники, которые представляют базовую трехмерную информацию, а затем запускают на них моделирование, чтобы найти результат. И этот ввод может быть сохранен в базе данных sqlite для перезагрузки и повторного запуска позже.

Путаница возникает из-за того, что недавно созданная серия вводов, очевидно, будет имитироваться несколько иначе, чем те же самые вводимые данные после сохранения и перезагрузки (как значения double изменились). Это логично, но нежелательно.

Я еще не совсем понял, как с этим бороться, но тем временем я хотел бы ограничить / ограничить ввод данных пользователем до значений, которые могут быть точно сохранены в база данных sqlite. Таким образом, если пользователь вводит 0,56657011973046234 , он фактически преобразуется в 0,56657011973046201 .

Однако я не смог понять, учитывая число, какое значение будет храниться в базе данных, за исключением фактического сохранения и извлечения его из базы данных, что кажется неуклюжим. Есть ли установленный способ сделать это?

7
задан Dylan Beattie 17 November 2010 в 01:34
поделиться