使用 servicestack ormlite 通过 c# 插入到 db 时浮点值发生变化
Float value changing while inserting via c# to db with servicestack ormlite
从数据库 1.67 selecting 时浮点变量的值,但如果我使用 servicestack ormlite 将相同的值插入数据库,它将变为 1.66999995708466。
在 select 和插入之间没有进行任何处理。数据类型在应用程序和数据库中都是浮动的。
浮点数是一种不精确的数据类型,请参阅 https://floating-point-gui.de (and its linked detailed white paper) 以了解有关浮点数据类型(如 .NET 的 double
或 float
.[=16=)的问题的解释]
如果您需要完美的精度,您可以使用 .NET 的 decimal
数据类型,它没有舍入误差,或者如果您只需要 2 位小数精度,则通常使用 int
来捕获美分, 例如
100 == 100 cents ==
从数据库 1.67 selecting 时浮点变量的值,但如果我使用 servicestack ormlite 将相同的值插入数据库,它将变为 1.66999995708466。
在 select 和插入之间没有进行任何处理。数据类型在应用程序和数据库中都是浮动的。
浮点数是一种不精确的数据类型,请参阅 https://floating-point-gui.de (and its linked detailed white paper) 以了解有关浮点数据类型(如 .NET 的 double
或 float
.[=16=)的问题的解释]
如果您需要完美的精度,您可以使用 .NET 的 decimal
数据类型,它没有舍入误差,或者如果您只需要 2 位小数精度,则通常使用 int
来捕获美分, 例如
100 == 100 cents ==