繁体   English   中英

将十进制转换为特定格式的十进制?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM