как взять 6 чисел после точки - но без округления числа? - PullRequest
1 голос
/ 12 августа 2010

как взять 6 чисел после точки - но без округления числа?

например:

102.123456789 => 102.123456

9.99887766 => 9.998877

в C # winforms

Так заранее

Ответы [ 6 ]

10 голосов
/ 12 августа 2010

Вы можете использовать метод Math.Truncate и множитель 10 ^ 6:

decimal x = 102.12345689m;
decimal m = 1000000m;
decimal y = Math.Truncate(m * x) / m;
Console.WriteLine(y); // Prints 102.123456
5 голосов
/ 12 августа 2010
System.Math.Truncate (102.123456789 * factor) / factor; 

В вашем случае коэффициент 10 ^ 6; читать дальше

2 голосов
/ 12 августа 2010
  public decimal TruncateDecimal(decimal decimalToTruncate, uint numberOfDecimalPlacse)
  {
     decimal multiplication_factor = (decimal)Math.Pow(10.0, numberOfDecimalPlacse);
     decimal truncated_value = (long)(multiplication_factor * decimalToTruncate);
     return (truncated_value / multiplication_factor);
  }
0 голосов
/ 12 августа 2010

Это грубо, но как насчет:

decimal Number = 102.123456789;
string TruncateTarget = Number.ToString();
decimal FinalValue = Decimal.Parse(TruncateTarget.Substring(0, TruncateTarget.IndexOf('.') +6));
0 голосов
/ 12 августа 2010

Это может быть длинный путь, но как насчет того, чтобы превратить его в строку, найти десятичную точку и затем взять строку минус что-либо после 6-го знака после запятой. Затем вы можете превратить его обратно в десятичную.

0 голосов
/ 12 августа 2010

Я знаю, что это некрасиво использовать строки, но я все равно подумал бы:

double x = 9.9887766;
string[] xs = x.ToString().Split('.');
double result = double.Parse(xs[0] + "." + xs[1].Substring(0, Math.Min(xs[1].Length, 6)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...