C# 在SQL Server中,当数据类型为十进制(7,6)时,将数字转换为数据类型数字时出现算术溢出错误
当我选择数据类型C# 在SQL Server中,当数据类型为十进制(7,6)时,将数字转换为数据类型数字时出现算术溢出错误,c#,asp.net,sql-server,asp.net-core,asp.net-mvc-4,C#,Asp.net,Sql Server,Asp.net Core,Asp.net Mvc 4,当我选择数据类型decimal(5,2)时,我能够解决这个问题 在SQL Server中,所有列中的数据类型都是十进制(7,6) 模范班 public double SM1 { get; set; } public double SM2 { get; set; } public double SM3 { get; set; } public double SM4 { get; set; } 服务器端强制转换已完成并尝试转换为十进制也不起作用,因为我正在尝试更新记录。我得到的错误如下:
decimal(5,2)
时,我能够解决这个问题
在SQL Server中,所有列中的数据类型都是十进制(7,6)
模范班
public double SM1 { get; set; }
public double SM2 { get; set; }
public double SM3 { get; set; }
public double SM4 { get; set; }
服务器端强制转换已完成并尝试转换为十进制也不起作用,因为我正在尝试更新记录。我得到的错误如下:
将数值转换为数据类型数值时出现算术溢出错误
服务器端代码
int UpdateSaveProductMargin = cls.fncSaveProductMargin(
Convert.ToDecimal(viewModel.SM1),
Convert.ToDecimal(viewModel.SM2),
Convert.ToDecimal(viewModel.SM3),
Convert.ToDecimal(viewModel.SM4));
我无法更改数据库表数据类型,因为多个应用程序连接到同一数据类型
如果我将服务器端代码中的数据类型更改为decimal
模型类如果更新
public decimal SM1 { get; set; }
public decimal SM2 { get; set; }
public decimal SM3 { get; set; }
public decimal SM4 { get; set; }
然后我的ModelState.IsValid
返回false,它不会进入写入更新代码的块中
因此,我需要更新记录的更新查询,该查询可以将
decimal(7,6)
转换为decimal(5,2)
或在C#中强制转换相同的值。ConvertToDecimal仅在返回类型为字符串时才需要。如果返回类型是一个不需要转换的数字,我该怎么办?任何建议都会很有帮助。您试图转换哪些值<代码>十进制(7,6)仅提供从-9.9999999
到+9.9999999
的范围。例如10、20、30、40。。或者如果我输入511321.3223,它也会返回相同的错误。10
比9.999999
大,所以不,它不适合十进制(7,6)
@ShanuGarg(7,6)
表示要存储7位精度,其中6位为刻度(小数点后的数字)。这意味着您有足够的空间容纳一个有效数字,10.000000
有2个有效数字。