0

我有一个 SQLServer 数据库,当我导入浮点类型时,它导入了不正确的值:

DB值:9.0 ES值:90.0

DB 值:16.00 ES 值:16000000000000004

我已经为浮点类型的值设置了一个映射,并在河流配置中设置了 scale:2 参数,但没有成功。

4

1 回答 1

1

我的猜测是,沿着这条线的某个地方,该值被解析为字符串并以错误的文化格式化。例如,如果您的小数点是逗号,那么点将是千位分隔符(大多数情况下)并且将被忽略:

PS> Get-Culture

LCID             Name             DisplayName
----             ----             -----------
1031             de-DE            German (Germany)


PS> [double]::Parse('9.0')
90

16 似乎并不是一个精确的 16,这就是为什么你会得到这么大的数字。

最简单的解决方法是更改​​服务器或机器上的语言环境。另一种选择是确定这是您的代码或框架中的错误。通常,在格式化或解析供机器使用的数字时,始终指定一种文化(例如,.NET 中的不变文化或 C 中的 C 语言环境)属于常识,但许多应用程序也会出错。

于 2013-04-01T10:25:58.850 回答