2016-11-25 26 views
-4

我在Visual Studio 2015中创建了一个winform程序来计算Pi,但我在尝试获取逻辑数字的数量时遇到了问题。获取十进制变量的位数

我需要让这个:

public decimal pi = 3.15195647857832565; //random decimals 
txtDigits.Text = //number of digits in pi variable and get rid of trailing decimal points 
+0

多少个数字,你从期望,为前1/3? –

回答

-2

如果你需要得到逻辑的位数,IE剔除尾随零,我建议你在这里使用的接受的方法:

Find number of decimal places in decimal value regardless of culture

decimal argument = 123.456m; 
int digitCount = BitConverter.GetBytes(decimal.GetBits(argument)[3])[2]; 

我用这种方法适用于多个项目,并且它的工作非常好。请注意,这是为了找到尾随小数点的数量(我认为这就是你所追求的,但从你的问题来看并不清楚)。

+0

接缝工作正常,谢谢 – Pepe

+0

@ user87073'十进制参数= 1m/3;'返回28.为什么不是29?或为什么不是无限的?改善你的问题....并回答我发表的评论〜48分钟前... –

+0

@ L.B好奇知道为什么这是downvoted?似乎很奇怪,因为OP没有明确说明他究竟是什么,所以试图用高质量的参考来回答这个问题。我在这里表示,我*假设*他正在寻找小数点后的数字。我在这里提供的方法确实如此。或者,也许你正在度过一个糟糕的一天? –

-2

这将返回所有数字的计数:

int i= 0; 
foreach (char c in pi.ToString()) 
{ 
    if (Char.IsDigit(c)) 
     { 
      i++; 
     } 
}