У меня есть этот номер: 1234.5678 (как текст)
Мне нужно это число как двойное, только с двумя числами после точки
но без круглого числа
в 1234,5678 - я получаю 1234,57
в 12,899999 - я получаю 12,90
Как я могу это сделать?
Вы должны быть в состоянии получить то, что вы хотите, как это:
number.ToString("#0.00")
Вы не опубликовали результаты, которые хотели , но я предполагаю, что вы хотите усечение, так что вы увидите 1234.56 и 12.89. Попробуйте:
decimal d = 1234.89999M; Console.WriteLine(Math.Truncate(d * 100) / 100);
Умножьте на 100, возьмите слово () числа, снова разделите на 100.
Это должно сработать.
string rawVal = "1234.5678"; System.Math.Floor((double.parse(rawVal)) * 100) / 100;
Возьми эту арифметику с плавающей запятой!
var num = "1234.5678"; var ans = String.Empty; if( !String.IsNullOrEmpty(num) && num.Contains('.') ) // per comment { ans = num.Substring(0, num.IndexOf('.') + 3); }
Это потому, что вы не можете представить эти числа точно в виде двойных чисел, поэтому преобразование, округление, а затем перепечатывание текста приводит к потере точности.
Вместо этого используйте «десятичный».
Это не работает?
double d = 1234.5678; double rounded =Math.Round(d, 2);