как взять 6 чисел после точки - но без округления числа?
например:
102.123456789 => 102.123456
9.99887766 => 9.998877
в C # winforms
Так заранее
Вы можете использовать метод Math.Truncate и множитель 10 ^ 6:
Math.Truncate
decimal x = 102.12345689m; decimal m = 1000000m; decimal y = Math.Truncate(m * x) / m; Console.WriteLine(y); // Prints 102.123456
System.Math.Truncate (102.123456789 * factor) / factor;
В вашем случае коэффициент 10 ^ 6; читать дальше
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); }
Это грубо, но как насчет:
decimal Number = 102.123456789; string TruncateTarget = Number.ToString(); decimal FinalValue = Decimal.Parse(TruncateTarget.Substring(0, TruncateTarget.IndexOf('.') +6));
Это может быть длинный путь, но как насчет того, чтобы превратить его в строку, найти десятичную точку и затем взять строку минус что-либо после 6-го знака после запятой. Затем вы можете превратить его обратно в десятичную.
Я знаю, что это некрасиво использовать строки, но я все равно подумал бы:
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)));