Как вывести 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 

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

Добрый день!
Можно ли контролировать количество знаков после запятой в типе 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Эксперт С++

4687 / 2796 / 1473
Регистрация: 14.12.2018
Сообщений: 5,139
Записей в блоге: 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Эксперт С++

4687 / 2796 / 1473
Регистрация: 14.12.2018
Сообщений: 5,139
Записей в блоге: 1

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

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

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

11177 / 6122 / 1675
Регистрация: 18.10.2014
Сообщений: 15,416

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

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

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

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

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

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

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

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

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

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

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

4687 / 2796 / 1473
Регистрация: 14.12.2018
Сообщений: 5,139
Записей в блоге: 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_ Посмотреть сообщение

Округлите число с плавающей точкой до 2 знаков после запятой в Java

В этом посте будет обсуждаться, как округлить двойное число до 2 знаков после запятой в Java.

1. Использование Math.round() метод

The Math.round() метод возвращает значение указанного двойного округления до ближайшего длинного значения. Следующее решение демонстрирует его использование для округления двойного числа до 2 знаков после запятой. Обратите внимание, что количество нулей указывает количество десятичных знаков.

public class Main < public static void main ( String [ ] args ) < double random = Math . random ( ) ; System . out . println ( random ) ; double roundOff = Math . round ( random * 100.0 ) / 100.0 ; System . out . println ( roundOff ) ;

Обратите внимание, что количество нулей указывает количество десятичных знаков. Поэтому, чтобы округлить до 3 знаков после запятой, выполните следующие действия:

public class Main < public static void main ( String [ ] args ) < double random = Math . random ( ) ; System . out . println ( random ) ; double roundOff = Math . round ( random * 1000.0 ) / 1000.0 ; System . out . println ( roundOff ) ;

Вот альтернативная, эквивалентная версия приведенного выше кода:

public class Main < public static void main ( String [ ] args ) < double random = Math . random ( ) ; double roundOff = ( double ) Math . round ( random * 100 ) / 100 ; System . out . println ( roundOff ) ;

Арифметика с плавающей запятой может быть очень сложной, и этот метод также не всегда работает так, как хотелось бы. Например, значение 296.335 округляется до 296.33 вместо 296.34 .

public class Main < public static void main ( String [ ] args ) < double random = 296.335 ; System . out . println ( random * 100.0 ) ; // 29633.499999999996 System . out . println ( Math . round ( random * 100.0 ) / 100.0 ) ; // 296.33

2. Использование DecimalFormat.format() метод

Здесь идея состоит в том, чтобы создать DecimalFormat используя указанный шаблон и вызовите DecimalFormat.format() метод для получения отформатированной строки. Чтобы ограничить двойное значение двумя десятичными точками, вы можете использовать шаблон #.## . Вы также можете установить RoundingMode с использованием setRoundingMode() метод. Этот подход страдает той же проблемой, что и первый подход. т. е. значение 296.335 округляется до 296.33 вместо 296.34 .

Ограничить поплавок двумя знаками после десятичной точки в C++

В этом посте будет обсуждаться, как ограничить значение с плавающей запятой двумя знаками после десятичной точки в C++.

1. Использование round() функция

Существует несколько вариантов ограничения числа с плавающей запятой двумя знаками после запятой, в зависимости от того, хотите ли вы округлить число до ближайшего, округлить в меньшую или большую сторону. Например, следующий код округляет число с плавающей запятой до двух знаков после запятой.

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

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