我将浮点数在Microsoft SQL和其中一些显示为:SQL - 浮点数显示为XE-05
7E-05
5E-05
6E-05
其他浮动插入预期。 例如,该浮标0.00007
被插入为7E-05
,但是这一个0.01500
被作为0.015
插入。
我怀疑浮动的大小,但减少后,它仍然x.yyyyy我仍然得到这种浮动。 任何人都知道是什么造成这个问题?
我将浮点数在Microsoft SQL和其中一些显示为:SQL - 浮点数显示为XE-05
7E-05
5E-05
6E-05
其他浮动插入预期。 例如,该浮标0.00007
被插入为7E-05
,但是这一个0.01500
被作为0.015
插入。
我怀疑浮动的大小,但减少后,它仍然x.yyyyy我仍然得到这种浮动。 任何人都知道是什么造成这个问题?
如果要存储的值这样的,在下面用DECIMAL
代替FLOAT
:DECIMAL(18,5)
它将使你的后,
样品与5位存储数量:
CREATE TABLE #test
(
ID DECIMAL(18,5)
)
INSERT INTO #Test VALUES (0.00007)
SELECT ID FROM #Test
DROP TABLE #Test
结果:
0.00007
由于乔恩斯基特说:
你没有真正试图挽救123.66,因为你不能代表 123.66完全一样float或double。数据库比以前更准确地保存数据,就这些了。
如果要准确保存小数,请使用小数类型。
问题不是数据类型 - 它是数据的_display_。 '小数'没有更好的能力来存储0.00007'浮动'确实 –
嗨,谢谢你的回答。实际上数字(18,5)解决了这个问题,我将这个问题发布在错误的字段之前。所以我现在就应用了正确的方法,它工作正常。 – BlackM
@DStanley是的,它是在我提供的链接中发现的。这里是解决方案如何将这个'0.00007'(如'DECIMAL')这样的值存储到表格中并在选择它之后。 –
他们在哪里出现的呢? SQL(和C#)中的浮点数只是数字,所以实际的_value_似乎正确存储。 (我假设你明白SQL中的'7E-05'和'0.00007'是相同的数字) –
。当我选择值时,我得到了7E-05而不是0.00007。向客户展示0.0007的价值很重要。 – BlackM
然后在将其展示给客户端时进行格式化 - 在报告中,应用程序,Excel中,等等。我假设你的客户端没有运行SQL查询? –