Ограничение количества цифр после десятичной - PullRequest
0 голосов
/ 07 марта 2012

В целях ограничения количества цифр после десятичной дроби я делаю на своей веб-странице следующее.

Single nnuma = Convert.ToSingle(dr["num1"].ToString());
Single numb = Convert.ToSingle(dr["num2"].ToString());

Я должен ограничить количество цифр после десятичной запятой до 3. Как это делается здесь в типе данных Single?

Ответы [ 5 ]

1 голос
/ 07 марта 2012

может быть, вы можете попробовать этоnnuma.ToString ("#. ###");numb.ToString ("#. ###");

1 голос
/ 07 марта 2012

Вы можете попробовать это. Это также будет правильно с точностью до последней цифры, то есть 0,6666 будет 0,667

decimal num = 20.123456789m;
Single x = Convert.ToSingle(String.Format("{0:00.000}", num));
0 голосов
/ 09 октября 2015

Очень просто. Просто напишите # , чтобы ограничить цифры после десятичной дроби.

num.ToString ("0.0000 #") - ограничение до 4 цифр;

num.ToString ("0.0 #") - ограничение до 1 цифры;

0 голосов
/ 07 марта 2012

Операция, которую вы ищете: Math.Round:

Single unrounded = (Single)dr["num1"];  // change if the DB type is not a single
double rounded = Math.Round(unrounded, 3);
Single roundedSingle = (Single)rounded;

Math.Round возвращает двойное значение при использовании с одинарным, поэтому необходимо преобразовать в одиночное (float)) потом.Примечание: вы можете рассмотреть возможность использования decimal s в качестве альтернативы, если проблема заключается в десятичной точности.

Обратите внимание, что эта перегрузка Math.Round выполняет Банковское округление , то есть 0.0005 становится 0.000, но 0.0015 становится 0.002.Если вы хотите использовать другой тип округления, вместо этого используйте перегрузку Math.Round (Double, Int32, MidpointRounding) .

0 голосов
/ 07 марта 2012

регулярное выражение всегда ответ;)

var n = Regex.Replace(convertedToSingle.ToString(), @"([^.]*\.\d{0,3}).*", "$1");
...