Преобразование единиц - проблема повторного преобразования округленных результатов обратно в исходные единицы - PullRequest
0 голосов
/ 14 апреля 2019

Проверил все вопросы в SO , которые, казалось, были связаны с моей проблемой, но не смогли найти ответ, который помог бы в моем сценарии.

Я занимаюсь разработкой приложения Asp.Net MVC 5 с бритвенными представлениями и SQL Server в качестве базы данных. У меня есть требование конвертировать значения из английских в метрические единицы и обратно (дюймы в миллиметры и обратно, лошадиные силы в киловатты и обратно и т. Д.) На ходу, пока пользователь вводит данные в одно из полей значений единицы.

Я достигаю этого, используя функции преобразования UnitsNet через вызовы ajax из пользовательского интерфейса для событий jQuery keyup полей ввода. Это прекрасно работает, когда пользователь вводит значения, а преобразованные значения отображаются с несколькими десятичными точками.

Например, 470 л.с. (лошадиная сила) = 345,6844125 кВт (киловатт) , и он правильно преобразуется обратно в л.с.

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

То есть 470 Hp = 345,68 кВт . А при обратном преобразовании в Hp получается: 345,68 кВт = 469,99 л.с. .

То же самое происходит и при сохранении значений в базе данных. Столбец, в котором сохраняется значение, является десятичным (8,2), который, очевидно, округляет значения и дает те же результаты.

Мне бы хотелось узнать ваше мнение о том, как лучше всего справиться с этим, чтобы отображать согласованные значения на экране при преобразовании и повторном преобразовании значений. Сохранение всех полей без округления, а также разрешение максимального количества десятичных знаков в базе данных минимизирует эту проблему, но я не уверен, является ли это правильным способом решения этой проблемы. Любая помощь приветствуется.

...