C#1十进制到2个小数

时间:2014-11-22 22:57:29

标签: c# decimal windows-phone-8.1 rounding

我正在制作一个Windows Phone 8.1应用程序,我正在尝试进行点钞功能。 我想知道变量是1还是1还是2或更多。

double 1decimal = 0.2;
double 2decimalsOrMore = 0.33333;

我需要某种“if-statement”来检查变量是否有1位或更多位小数。 如果它有1个小数,我需要通过在双重

中添加“0”来得到2个小数
if ("code here){
    // has 1 decimal
    string StringnewDecimalValue = oldDecimalValue + "0";
    double newDecimalValue = double.parse(newDecimalValue);
}
else{
    // has 2 decimals or more
    double newDecimalValue = Math.Round(oldDecimalValue , 2);
}

基本上,如果结果(金钱)有1位小数(类似于1.2美元),则需要为1.20美元

2 个答案:

答案 0 :(得分:0)

看起来像格式化问题..所以为什么不简单地使用string.format?

1行代码:(基于此帖子Using String Format to show decimal upto 2 places or simple integer

 var fixed = string.Format("{0:0.00}", oldDecimalValue);

请确保您的变量名称不要;以数字字符开头。而不是使用:

 double 1decimal = 0.2;
 double 2decimalsOrMore = 0.33333;

请使用:

 double decimal1 = 0.2;
 double decimalsOrMore2 = 0.33333;

答案 1 :(得分:0)

我对你的意思感到困惑"有两位小数&#34 ;;如果您使用实际的double或decimal数据类型,则尾随零无意义。用词来说:

decimal d1 = decimal.Parse("1.2");
decimal d2 = decimal.Parse("1.2000000");

在两种情况下都会产生相同的值。 (如果您正在处理货币值,则应该使用decimal,因为它们可以double无法正确表示基数为10的数字。)

但是,如果您所关心的是打印的字符串表示有两位小数,那么您不需要做任何特殊的事情;只需使用适当的格式化字符串:

var s = d1.ToString("c2");
如果需要,

将始终打印训练0。