C# 如何将浮点数从asp.net存储到sql数据库中?

C# 如何将浮点数从asp.net存储到sql数据库中?,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我想将浮点数存储到sql数据库中,但当我尝试存储数据库时,asp.net代码会将原始数字转换为其他数字。 例如,如果我在文本框中给出1.1,那么它将存储在数据库1.1000000238418579 当我拖动该过程时,将创建以下类 [global::System.Data.Linq.Mapping.ParameterAttribute(Name="ServiceFee", DbType="Float")] System.Nullable<double> serviceFee, 使用d

我想将浮点数存储到sql数据库中,但当我尝试存储数据库时,asp.net代码会将原始数字转换为其他数字。 例如,如果我在文本框中给出1.1,那么它将存储在数据库1.1000000238418579

当我拖动该过程时,将创建以下类

[global::System.Data.Linq.Mapping.ParameterAttribute(Name="ServiceFee", DbType="Float")] System.Nullable<double> serviceFee,
使用decimal数据类型存储数据时带有小数的数字 值必须完全按照指定的方式存储

使用decimal数据类型存储数据时带有小数的数字 值必须完全按照指定的方式存储

使用decimal数据类型存储数据时带有小数的数字 值必须完全按照指定的方式存储

使用decimal数据类型存储数据时带有小数的数字 值必须完全按照指定的方式存储


单精度浮点中1.1的最接近表示形式为:

0 01111111 00011001100110011001101
十进制是

1
*
2^(127-127)
*(1+
(1/16+1/32+1/256+1/512+1/4096+1/8192+1/65536+1/131072+1/1048576+1/2097152+1/8388608)
)=1.1000000238418591015625


如果“确实”要存储1.1,则必须使用十进制。

单精度浮点中1.1的最接近表示形式为:

0 01111111 00011001100110011001101
十进制是

1
*
2^(127-127)
*(1+
(1/16+1/32+1/256+1/512+1/4096+1/8192+1/65536+1/131072+1/1048576+1/2097152+1/8388608)
)=1.1000000238418591015625


如果“确实”要存储1.1,则必须使用十进制。

单精度浮点中1.1的最接近表示形式为:

0 01111111 00011001100110011001101
十进制是

1
*
2^(127-127)
*(1+
(1/16+1/32+1/256+1/512+1/4096+1/8192+1/65536+1/131072+1/1048576+1/2097152+1/8388608)
)=1.1000000238418591015625


如果“确实”要存储1.1,则必须使用十进制。

单精度浮点中1.1的最接近表示形式为:

0 01111111 00011001100110011001101
十进制是

1
*
2^(127-127)
*(1+
(1/16+1/32+1/256+1/512+1/4096+1/8192+1/65536+1/131072+1/1048576+1/2097152+1/8388608)
)=1.1000000238418591015625



如果你“真的”想存储1.1,你必须使用十进制。

你考虑过使用十进制吗?没有必要,因为它会增加一些额外的精度。
float
有一个表示错误。它可以表示由2的幂组成的数字,包括负数,所以1.25或1.125可以。但是,1.1没有精确的表示法,因此最后会出现一些垃圾。我认为,系统会将浮点转换为十进制,因此会出现此问题,因为如果将其直接存储到数据库中,则不会出现问题。您是否考虑过使用十进制?无需,因为它会增加一些额外的精度。
float
存在表示错误。它可以表示由2的幂组成的数字,包括负数,所以1.25或1.125可以。但是,1.1没有精确的表示法,因此最后会出现一些垃圾。我认为,系统会将浮点转换为十进制,因此会出现此问题,因为如果将其直接存储到数据库中,则不会出现问题。您是否考虑过使用十进制?无需,因为它会增加一些额外的精度。
float
存在表示错误。它可以表示由2的幂组成的数字,包括负数,所以1.25或1.125可以。但是,1.1没有精确的表示法,因此最后会出现一些垃圾。我认为,系统会将浮点转换为十进制,因此会出现此问题,因为如果将其直接存储到数据库中,则不会出现问题。您是否考虑过使用十进制?无需,因为它会增加一些额外的精度。
float
存在表示错误。它可以表示由2的幂组成的数字,包括负数,所以1.25或1.125可以。但是,1.1没有精确的表示形式,因此最后会出现一些垃圾。我认为,系统会将浮点转换为十进制,因此会出现此问题,因为如果将其直接存储到数据库中,则没有问题。SQL允许存储值,但我认为这是asp.net方面的问题。SQL允许存储值,但我认为这是asp.net方面的问题。SQL允许存储值,但我认为这是asp.net方面的问题。SQL允许存储值,但我认为这是asp.net方面的问题。