Обрезка поплавка

Возможный дубликат:
Оставьте только два десятичные знаки после точки
Форматирование числа с плавающей запятой до 2 десятичных знаков места

Если у меня есть число с плавающей запятой, состоящее из чего-то вроде 153.2154879, есть ли способ преобразовать его в строку, но показать только 4 десятичных знака? Я знаю, что могу отформатировать его, используя "000.000", но передний номер не всегда должен состоять из трех цифр. Итак, есть ли способ показать все передние числа (153), но только первые 4 символа после точки в строке?


person TheGateKeeper    schedule 17.04.2012    source источник
comment
возможный дубликат: stackoverflow.com/q/1291483/962091   -  person zackdever    schedule 17.04.2012


Ответы (3)


Обычно я использую строку формата, например "#0.0000".

person Justin    schedule 17.04.2012
comment
То есть # просто означает показать все символы? Никогда не знал об этом спасибо! - person TheGateKeeper; 17.04.2012
comment
-1. Преобразование числа с плавающей запятой в строку, а затем обратно в число с плавающей точкой только для округления не имеет смысла. - person Aliostad; 17.04.2012
comment
Почему ты минусуешь всех, Алиостад? Я четко заявил, что хочу показать 4 знака после запятой, я никогда не говорил, что хочу округлить его и преобразовать обратно в число с плавающей запятой! - person TheGateKeeper; 17.04.2012
comment
@Aliostad, где мы конвертируем число обратно в число с плавающей запятой? - person phoog; 17.04.2012
comment
Извините, ребята, мой плохой. Можете ли вы отредактировать свой ответ, чтобы я мог сделать свой отрицательный голос положительным? - person Aliostad; 17.04.2012

Что-то вроде этого должно делать:

your_number.ToString("0.####");

Это покажет максимум 4 десятичных знака.

person Icarus    schedule 17.04.2012
comment
your_number.ToString("0.####") будет более эффективным, а также будет предлагать перегрузки с учетом региональных параметров. - person phoog; 17.04.2012
comment
-1. Преобразование числа с плавающей запятой в строку, а затем обратно в число с плавающей точкой только для округления не имеет смысла. - person Aliostad; 17.04.2012
comment
@Aliostad округление и усечение - это две разные вещи. Форматирование числа 2 до 4 знаков после запятой не округляется. Я обновил свой ответ, включив в него более эффективный подход, предложенный phoog. - person Icarus; 17.04.2012

Вы можете использовать функцию C# Math.Round.

float a= 153.213456; Math.Round(a,3); это округлит число до 153,213, а затем преобразует его в строку.

person Lukasz Bator    schedule 17.04.2012
comment
Код форматирования строки будет снова округлять число; нет причин сначала вызывать Math.Round. - person phoog; 17.04.2012
comment
@phoog Вы имеете в виду, что вы конвертируете число с плавающей запятой в строку, а затем конвертируете обратно в число с плавающей запятой и не используете Round, который предназначен для числа с плавающей запятой ?? - person Aliostad; 17.04.2012
comment
@Алиостад, конечно нет! Вопрос заключается в отображении числа с плавающей запятой с заданным количеством десятичных знаков, что означает преобразование его в строку с этим числом десятичных знаков. Я имею в виду, что неэффективно использовать Round для форматирования числа для отображения. Если требуется иметь округленное float в одинарном двоичном формате IEEE для хранения или вычисления, то, конечно, вы следует использовать Round. - person phoog; 17.04.2012
comment
@phoog Я думаю, Алиостад путает усечение с округлением. Смотрите его комментарий к моему ответу. - person Icarus; 17.04.2012