我有一个 SQLServer 数据库,当我导入浮点类型时,它导入了不正确的值:
DB值:9.0 ES值:90.0
DB 值:16.00 ES 值:16000000000000004
我已经为浮点类型的值设置了一个映射,并在河流配置中设置了 scale:2 参数,但没有成功。
我有一个 SQLServer 数据库,当我导入浮点类型时,它导入了不正确的值:
DB值:9.0 ES值:90.0
DB 值:16.00 ES 值:16000000000000004
我已经为浮点类型的值设置了一个映射,并在河流配置中设置了 scale:2 参数,但没有成功。
我的猜测是,沿着这条线的某个地方,该值被解析为字符串并以错误的文化格式化。例如,如果您的小数点是逗号,那么点将是千位分隔符(大多数情况下)并且将被忽略:
PS> Get-Culture
LCID Name DisplayName
---- ---- -----------
1031 de-DE German (Germany)
PS> [double]::Parse('9.0')
90
16 似乎并不是一个精确的 16,这就是为什么你会得到这么大的数字。
最简单的解决方法是更改服务器或机器上的语言环境。另一种选择是确定这是您的代码或框架中的错误。通常,在格式化或解析供机器使用的数字时,始终指定一种文化(例如,.NET 中的不变文化或 C 中的 C 语言环境)属于常识,但许多应用程序也会出错。