带整数运算符的C#小数位
所以我有这个代码:带整数运算符的C#小数位,c#,string,format,decimal,int,C#,String,Format,Decimal,Int,所以我有这个代码: p.Value = 1; decimal avg = p.Value * 100 / 10000; string prntout = p.Key + " : " + avg.ToString(); Console.WriteLine(prntout); 但是程序输出的是0,而不是0.01。p、 值是一个int。如何修复它?将其中一个文本更改为十进制: decimal avg = p.Value * 100m / 10000; 现在,为了解释为什么会这样做: 让我们一次处理
p.Value = 1;
decimal avg = p.Value * 100 / 10000;
string prntout = p.Key + " : " + avg.ToString();
Console.WriteLine(prntout);
但是程序输出的是0,而不是0.01。p、 值是一个int。如何修复它?将其中一个文本更改为十进制:
decimal avg = p.Value * 100m / 10000;
现在,为了解释为什么会这样做:
让我们一次处理一行原始操作,用1代替p值:
decimal avg = 1 * 100 / 10000; // int multiplication
decimal avg = 100 / 10000; // int division, remainder tossed out
decimal avg = (decimal) 0; // implicit cast
通过将100米改为100米,现在:
decimal avg = 1 * 100m / 10000; // decimal multiplication
decimal avg = 100m / 10000; // decimal division
decimal avg = 0.01m;
将其中一个文本更改为十进制:
decimal avg = p.Value * 100m / 10000;
现在,为了解释为什么会这样做:
让我们一次处理一行原始操作,用1代替p值:
decimal avg = 1 * 100 / 10000; // int multiplication
decimal avg = 100 / 10000; // int division, remainder tossed out
decimal avg = (decimal) 0; // implicit cast
通过将100米改为100米,现在:
decimal avg = 1 * 100m / 10000; // decimal multiplication
decimal avg = 100m / 10000; // decimal division
decimal avg = 0.01m;
表达式
p.Value*100/10000
仅使用整数类型,因此根据规则进行计算
将一个(或多个)参数更改为十进制,它将按预期执行:
p.Value * 100 / 10000m
表达式
p.Value*100/10000
仅使用整数类型,因此根据规则进行计算
将一个(或多个)参数更改为十进制,它将按预期执行:
p.Value * 100 / 10000m
尝试更改此选项:
decimal avg = p.Value * 100 / 10000;
到
您以前的版本使用了所有整数。尝试更改此选项:
decimal avg = p.Value * 100 / 10000;
到
您以前的版本使用了所有整数。如果p.Value是整数,您可能会丢失此行的分数: 十进制平均值=p.值*100/10000 所以你可以这样做: 十进制平均值=(十进制)p.值*100/10000
希望有帮助。如果p.Value是一个整数,您可能会丢失此行的分数: 十进制平均值=p.值*100/10000 所以你可以这样做: 十进制平均值=(十进制)p.值*100/10000
希望有帮助。旁注:Decimal的文字类型代码是
m
,大概是为了钱。旁注:Decimal的文字类型代码是m
,大概是为了钱。