DECIMAL转成DOUBLE

maoxiong25 2006-10-25 01:41:36
DECIMAL转成DOUBLE精度会变,
咋解决
如DECIMAL(0.58)---〉DOUBLE(0.579999999)
...全文
1092 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mobydick 2006-10-25
  • 打赏
  • 举报
回复
使用浮点数
在执行二进制运算时,如果其中一个操作数为 Double,那么另一个操作数必须是整数类型或浮点类型(Double 或 Single)。在执行运算之前,如果另一个操作数不是 Double,应将其转换为 Double,并且至少要使用 Double 的范围和精度来执行运算。如果此运算得到一个数字结果,则结果的类型为 Double。

浮点运算符(包括赋值运算符)不会引发异常。在异常情况下,浮点运算的结果为零、无穷或 NaN,如下所述:

如果浮点运算的结果对于目标格式来说太小,则运算的结果为零。

如果浮点运算结果的数值对于目标格式来说太大,则运算的结果为 PositiveInfinity 或 NegativeInfinity(具体取决于结果的符号)。

如果浮点运算无效,则运算的结果为 NaN。

如果浮点运算的一个或两个操作数为 NaN,则运算的结果为 NaN。

请记住,浮点数只能近似于十进制数字,浮点数的精度决定了浮点数近似于十进制数字的精确程度。默认情况下,Double 值的精度是 15 个十进制位,但内部维护的最大精度是 17 位。浮点数的精度有几种结果:

特定精度下看似相等的两个浮点数可能并不相等,因为它们的最小有效位数不同。

由于浮点数可能无法精确近似于十进制数,如果使用十进制数,则使用浮点数的数学或比较运算可能不会产生相同的结果。

如果涉及浮点数,值可能不往返。值的往返是指,某个运算将原始浮点数转换为另一种格式,而反向运算又将转换后的格式转换回浮点数,且最终浮点数与原始浮点数相等。由于一个或多个最低有效位可能在转换中丢失或更改,往返可能会失败。
--摘自msdn
maoxiong25 2006-10-25
  • 打赏
  • 举报
回复
有解决办法嘛
mobydick 2006-10-25
  • 打赏
  • 举报
回复
其实对于双精度浮点数来说,显示成这个样子真的是再正常不过了。
jc15271149 2006-10-25
  • 打赏
  • 举报
回复
1楼强
mobydick 2006-10-25
  • 打赏
  • 举报
回复
不转。

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧