Мне нужно преобразовать Float в Decimal (28,10) в SQL Server. Моя проблема заключается в том, что из-за характера float и способа преобразования, простое использование float может сделать его неправильным для моих пользователей.Преобразование Float в десятичный (SQL Server)
Например:
Float: 280712929.22
Cast as Decimal: 280712929.2200000300
What I think I want: 280712929.2200000000
Я понимаю, немного о том, как флоат работ (что это примерный тип данных и т.д.), но по общему признанию, не достаточно, чтобы понять, почему это добавляет 300 в конце. Это просто мусор в качестве побочного эффекта преобразования, или это как-то более точное представление о том, что на самом деле хранит поплавок? Мне кажется, что он вытащил точность из воздуха.
В конечном счете, мне нужно, чтобы оно было точным, но и выглядело «правильно». Я думаю, мне нужно получить это нижнее число, так как тогда похоже, что я только что добавил конечные нули. Это возможно? Это хорошая или плохая идея, и почему? Другие предложения приветствуются.
Некоторые другие примеры:
Float: 364322379.5731
Cast as Decimal: 364322379.5730999700
What I want: 364322379.5731000000
Float: 10482308902
Cast as Decimal: 10482308901.9999640000
What I want: 10482308902.0000000000
Примечание стороны: новая таблица базы данных, которые я ставлю эти значения в читается моим пользователем. На самом деле им нужно только два десятичных знака прямо сейчас, но это может измениться в будущем, поэтому мы решили пойти с Decimal (28,10). Долгосрочная цель состоит в том, чтобы преобразовать столбцы с плавающей точкой, из которых я получаю свои данные от десятичных.
EDIT: Иногда поплавки, у которых у меня больше десятичных знаков, чем когда-либо понадобится, например: -0.628475064730907. В этой ситуации приведение к -0.6284750647 просто отлично. Мне в основном нужен мой результат, чтобы добавить нули в конец поплавка, пока у меня не будет 10 десятичных знаков.
Может быть, я нашел ответ. http://stackoverflow.com/questions/34316871/how-can-the-following-result-of-casting-from-float-to-numeric-be-explained –