Как вывести float с двумя знаками после запятой
Перейти к содержимому

Как вывести float с двумя знаками после запятой

  • автор:

Ruby: Как округлить float до двух знаков после запятой

Округлить число с плавающей точкой до целого числа в руби можно с помощью метода round:

> a = 25.125 => 25.125 > a.round => 25 

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

> a.round(2) => 25.13 

Округлить до ближайшего большего целого числа можно с помощью ceil (этот метод также принимает на вход параметр):

> a.ceil => 26 > a.ceil(1) => 25.2 

А до ближайшего меньшего числа — методом floor:

> a.floor => 25 > a.floor(2) => 25.12 

Python: как вывести число типа float с определенным количеством знаков после запятой

Там есть много опций, для форматирования вывода, можно подробнее почитать в документации.

В вашем случае нужно в функции выводить в print не числа, а строку с форматированием, например:

>>> def vol(rad): . print(" cm^3".format(4/3*3.141592*rad**3)) >>> vol(5) 523.60 cm^3 

Еще интересные способы форматирования есть на enSO. Там немного другой вывод хотел получить автор, но можно подглядеть именно способ.

Переменная float — знаки после запятой

Итак я задаю какую-либо переменную типа float.
Потом, с помощью scanf кладу в эту переменную значение 3.2 (к примеру.)
Затем, с помощью printf(«%f»,peremennaya); вывожу ее на экран.

Как мне сделать так, чтобы выводилось именно 3.2, а не 3.20000.
И чтобы если я вводил 3, то и выводилось 3, а не 3.00000. но, одновременно при вводу 3.123, выводилось 3.123, а не 3.12300.

Короче мне надо, чтобы переменные float выводились именно с таким кол-вом знаков после запятой, которые есть в переменной.

Если что — среда Visual Studio 2010 Beta 2.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

знаки после запятой , формат float
я вот что делаю: float i = *(float*)0x0000000; приравниваю значение адреса в формате флоат.

знаки после запятой
Здравствуйте, простой вопрос на который я никак не могу найти ответ. Почему после компиляции.

Знаки после запятой C++
Можно ли в C++ как-то получить в результате число, в котором выводится полностью больше 6 символов.

Табуляция и знаки после запятой
Здравствуйте, помогите пожалуйста. Как сделать так, чтоб программа выводила данные в нормальном.

Знаки после запятой

Добрый день!
Можно ли контролировать количество знаков после запятой в типе double? Т.е. существует операция вычесления, после которой образуется остаток от деления, с большим количеством знаков после запятой. Могу ли я, в данной ситуации, не округляя, а просто беря нужное мне количество выполнять операции дальше?
Пример кода:

1 2 3 4 5 6 7 8
#include int main() { double a = 10/7; // результатом будет 1.42857143 // однако мне хотелось бы видеть 1.42 return 0; }

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

знаки после запятой
Здравствуйте, простой вопрос на который я никак не могу найти ответ. Почему после компиляции.

Знаки после запятой C++
Можно ли в C++ как-то получить в результате число, в котором выводится полностью больше 6 символов.

Табуляция и знаки после запятой
Здравствуйте, помогите пожалуйста. Как сделать так, чтоб программа выводила данные в нормальном.

Переменная float — знаки после запятой
Итак я задаю какую-либо переменную типа float. Потом, с помощью scanf кладу в эту переменную.

Эксперт CЭксперт С++

5097 / 2777 / 1462
Регистрация: 14.12.2018
Сообщений: 5,116
Записей в блоге: 1

Лучший ответ

Сообщение было отмечено Hou5ton как решение

Решение

ЦитатаСообщение от Hou5ton Посмотреть сообщение

#include
int main()
double a = 10/7; // результатом будет 1.42857143
// однако мне хотелось бы видеть 1.42
return 0;
>

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#include #include using namespace std; double fPre(double a, int n) { return int(a * pow(10.0, n)) / pow(10.0, n); } int main() { double a = 10.0 / 7; // 1.42857143 cout  fPre(a, 2)  endl; // 1.42 cout  fPre(a, 3)  endl; // 1.428 return 0; system("pause"); return 0; }

429 / 312 / 129
Регистрация: 09.02.2021
Сообщений: 1,096
Записей в блоге: 1

1 2 3 4 5 6 7 8
#include using namespace std; int main() { cout.precision(3); cout  double(10.0 / 7.0); return 0; }

Пробуйте с етим

cout.precision(3);

Эксперт CЭксперт С++

5097 / 2777 / 1462
Регистрация: 14.12.2018
Сообщений: 5,116
Записей в блоге: 1

ЦитатаСообщение от matviiv Посмотреть сообщение

Пробуйте с етим

Эксперт CЭксперт С++

11126 / 6084 / 1663
Регистрация: 18.10.2014
Сообщений: 15,294

ЦитатаСообщение от Hou5ton Посмотреть сообщение

Можно ли контролировать количество знаков после запятой в типе double?

ЦитатаСообщение от Hou5ton Посмотреть сообщение

Т.е. существует операция вычесления, после которой образуется остаток от деления, с большим количеством знаков после запятой.

Готовой — не существует. Можете попробовать написать такую руками, но тип double для таких задач подходит плохо.

ЦитатаСообщение от Hou5ton Посмотреть сообщение

// однако мне хотелось бы видеть 1.42

«Видеть»? Так может вам не нужно душить знаки прямо в вычислениях, а урезать их при выводе результата?

Еще раз: что именно вам нужно? Округленные вычисления? Или округленный вывод результата?

429 / 312 / 129
Регистрация: 09.02.2021
Сообщений: 1,096
Записей в блоге: 1
Volga_, вопшето 1.43, округлило

Эксперт CЭксперт С++

5097 / 2777 / 1462
Регистрация: 14.12.2018
Сообщений: 5,116
Записей в блоге: 1

ЦитатаСообщение от matviiv Посмотреть сообщение

1.43, округлило
Он не хочет округлить число, только резать число.
429 / 312 / 129
Регистрация: 09.02.2021
Сообщений: 1,096
Записей в блоге: 1
Volga_, а ну тогда ваш код,ну ничего страшного ж,я просто ответил на ваше 1.423
Регистрация: 06.05.2020
Сообщений: 27

ЦитатаСообщение от Volga_ Посмотреть сообщение

return int(a * pow(10.0, n)) / pow(10.0, n);

Да это решение мне действительно помогло, способ исключительно математический. Спасибо.

Добавлено через 10 минут

ЦитатаСообщение от TheCalligrapher Посмотреть сообщение

«Видеть»? Так может вам не нужно душить знаки прямо в вычислениях, а урезать их при выводе результата?
Еще раз: что именно вам нужно? Округленные вычисления? Или округленный вывод результата?

Спаибо за ответ.
Я создаю программу по вычеслению радиуса разворота для самолета, и в формуле его нахождения присутствует тангегенс.
Который выдает огромные значения после запятой, что является плюсом, но существует прибор на основе логарифмической линейки (НЛ-10м), который делает расчеты не такими точными, приблизительным (разница от 10-100метров), однако им пользуются сплошь и рядом в ациации.
Мне необходимо сделать вычесления не только на основании точности, который дает тангенс, но и приблизителный который дает линейка, чтобы показать разницу.

ЦитатаСообщение от Volga_ Посмотреть сообщение

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *