Как показать номер без округления чисел - PullRequest
0 голосов
/ 30 мая 2009

У меня есть этот номер: 1234.5678 (как текст)

Мне нужно это число как двойное, только с двумя числами после точки

но без круглого числа

в 1234,5678 - я получаю 1234,57

в 12,899999 - я получаю 12,90

Как я могу это сделать?

Ответы [ 7 ]

5 голосов
/ 30 мая 2009

Вы должны быть в состоянии получить то, что вы хотите, как это:

number.ToString("#0.00")
3 голосов
/ 30 мая 2009

Вы не опубликовали результаты, которые хотели , но я предполагаю, что вы хотите усечение, так что вы увидите 1234.56 и 12.89. Попробуйте:

decimal d = 1234.89999M;
Console.WriteLine(Math.Truncate(d * 100) / 100);
3 голосов
/ 30 мая 2009

Умножьте на 100, возьмите слово () числа, снова разделите на 100.

1 голос
/ 30 мая 2009

Это должно сработать.

string rawVal = "1234.5678";
System.Math.Floor((double.parse(rawVal)) * 100) / 100;
1 голос
/ 30 мая 2009

Возьми эту арифметику с плавающей запятой!

var num = "1234.5678";
var ans = String.Empty;
if( !String.IsNullOrEmpty(num) && num.Contains('.') ) // per comment
{
  ans = num.Substring(0, num.IndexOf('.') + 3);
}
1 голос
/ 30 мая 2009

Это потому, что вы не можете представить эти числа точно в виде двойных чисел, поэтому преобразование, округление, а затем перепечатывание текста приводит к потере точности.

Вместо этого используйте «десятичный».

0 голосов
/ 30 мая 2009

Это не работает?

        double d = 1234.5678;
        double rounded =Math.Round(d, 2);
...