2015-08-25 91 views
1

我将浮点数在Microsoft SQL和其中一些显示为:SQL - 浮点数显示为XE-05

7E-05 
5E-05 
6E-05 

其他浮动插入预期。 例如,该浮标0.00007被插入为7E-05,但是这一个0.01500被作为0.015插入。

我怀疑浮动的大小,但减少后,它仍然x.yyyyy我仍然得到这种浮动。 任何人都知道是什么造成这个问题?

+2

他们在哪里出现的呢? SQL(和C#)中的浮点数只是数字,所以实际的_value_似乎正确存储。 (我假设你明白SQL中的'7E-05'和'0.00007'是相同的数字) –

+0

。当我选择值时,我得到了7E-05而不是0.00007。向客户展示0.0007的价值很重要。 – BlackM

+2

然后在将其展示给客户端时进行格式化 - 在报告中,应用程序,Excel中,等等。我假设你的客户端没有运行SQL查询? –

回答

0

如果要存储的值这样的,在下面用DECIMAL代替FLOATDECIMAL(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。数据库比以前更准确地保存数据,就这些了。

如果要准确保存小数,请使用小数类型。


你可以读到更多在: Link 1 Link 2 Link 3 Link 4

+2

问题不是数据类型 - 它是数据的_display_。 '小数'没有更好的能力来存储0.00007'浮动'确实 –

+0

嗨,谢谢你的回答。实际上数字(18,5)解决了这个问题,我将这个问题发布在错误的字段之前。所以我现在就应用了正确的方法,它工作正常。 – BlackM

+0

@DStanley是的,它是在我提供的链接中发现的。这里是解决方案如何将这个'0.00007'(如'DECIMAL')这样的值存储到表格中并在选择它之后。 –