【发布时间】:2013-07-13 18:10:47
【问题描述】:
我有一个像这样声明的字段 NumberValue1
public double NumberValue1 { get; set; }
NumberValue1 在 甲骨文数据库
我从一个 Excel 文件中读取了一个值,该值是 22.55
[[col8Value is an object type]]
然后我就这样做了。
NumberValue1 = col8Value == null ? 0 : Math.Round(Convert.ToDouble(col8Value),2)
当我将它插入数据库时,我得到了下面存储的数字
22.550000000000001
为什么会带来另一个...00001。
我只想让它显示 22.55,这是我加载的初始数字
谢谢。
【问题讨论】:
-
你试过用十进制代替双精度吗?
-
Well Double != 特别是 Oracle 中的数字,但这不仅仅是一个普通的浮点精度问题吗?如果您希望 Oracle 始终只存储 2 位小数,那么不要在 Oracle 中一般使用 Number,而是使用 Number(Precision, Scale)
-
What Every Computer Scientist Should Know About Floating-Point Arithmetic.。如果您想要小数位,请使用小数类型而不是浮点类型。
-
这是10基数的二进制表示问题,用于在内存中存储double。
-
@user2320476 您不需要更改数据库列类型,只需在应用程序中使用不同的数据类型(提示 - 使用小数)
标签: c# oracle floating-point