[英]Convert Decimal to decimal of a particular format?
尝试执行存储过程时出现错误。
C#属性-我无法更改:
private decimal? a;
public decimal? A
{
get { return a; }
set { a = value; }
}
我可以更改的C#DAC层:
if (A.HasValue)
dict.Add("A", A.Value);
else
dict.Add("A", null);
在存储过程输入->我无法更改
@A decimal(6,0)
在没有异常和数据丢失的情况下进行转换的最佳方法是什么? 我需要对@B decimal(8,2)
做同样的事情
数据库列接受上述格式的null和十进制。
我得到的错误:
将数据类型数字转换为十进制时出错
从未提到您正在使用哪种语言版本,因此我将假设使用C#6。您可以删除if / else语句,而只使用一个语句dict.Add("A", A?.Value)
。 这是一个空条件运算符: https : //msdn.microsoft.com/zh-cn/library/dn986595.aspx 。
至于如何转换而不丢失数据...这通常是不可能的。 如果您有一个精度为3位数字的数字,并且希望精度为2位数字,则与该数字相关联的舍入表示这意味着数字总是会有些许偏差。 如果要将数字从3个小数位转换为2个小数位,只需使用适当的格式说明符将值放入string.Format()
中即可。 如果您想要一个没有精度的数字(整数),只需将您的十进制数存储在整数类型int myWholeNumber = myDecimal;
或转换(可能更安全) int myWholeNumber = decimal.ConvertToInt32(myDecimal);
要将字符串转换为十进制,只需使用parse方法。 decimal myDecimal = decimal.Parse(myStringDecimalValue);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.