Как ограничить количество знаков после запятой в c
Перейти к содержимому

Как ограничить количество знаков после запятой в c

  • автор:

Как в C# вывести число с определенным количеством знаков после запятой?

Planet_93

Здрасьте, я ещё совсем новичок в сфере программирования, но хотелось бы оставить свой ответ на случай, если у такого же неопытного юнца, как я, возникнет какая-то схожая проблема
Перед выводом, после всех исчислений, можно воспользоваться таким методом:
double c = Math.Round(c, 2);

Ответ написан более двух лет назад
Комментировать
Нравится 1 Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

c#

  • C#
  • +1 ещё

Что делать, если объект проваливается, когда я пытаюсь его поставить туда куда смотрю?

  • 1 подписчик
  • 5 часов назад
  • 20 просмотров

как ограничить число знаков после запятой в типе float (Си)?

Тип float всегда с одним и тем же количество знаков. А выводить на экран можно с любым количеством знаков и в любом формате — это зависит от того, какой функцией выводить, у каждой свои параметры.

printf(«%.3f», float_val);
выводит три знака после запятой

Похожие вопросы

Ваш браузер устарел

Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

Количество знаков после запятой c++

Если выводить с помощью СИшного printf(«%.9f», res) — выводится 4.000000000, 1.500000000 При выводе с помощью std. cout
Отслеживать
219k 15 15 золотых знаков 120 120 серебряных знаков 230 230 бронзовых знаков
задан 17 дек 2019 в 17:46
13 1 1 золотой знак 1 1 серебряный знак 5 5 бронзовых знаков
Ничего не понял. 8./2. — это и есть 4.000000000 , а 3./2. — это и есть 1.500000000 . В чем проблема?
17 дек 2019 в 20:16
В постановке задачи. Мне нужен именно такой формат вывода, который я описал.
17 дек 2019 в 23:30

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

cout  
2.714285714 

Смотрите всякие разности форматирования тут.

Отслеживать
ответ дан 17 дек 2019 в 17:50
219k 15 15 золотых знаков 120 120 серебряных знаков 230 230 бронзовых знаков

Для 19 и 7 Ваш вариант сработал. Но есть 2 проблемы: при 8.0/2.0 выводит 4, а мне нужен вывод 4.0; при, например, 40.0/3.0 выводит только 8 значений после запятой

17 дек 2019 в 18:04
Ну поднимите точность - она учитывает все знаки.
17 дек 2019 в 18:12

  1. Деление целочисленных дает целочисленное, остаток отсекается.
  2. По умолчанию вещественные имеют тип данных double , в спецификации формата printf() он указывается как %lf .
printf("%.9f",19.0F/7.0F); // float -> double printf("%.9lf",19.0/7.0); // double -> double printf("%.9Lf",19.0L/7.0L); // long double -> long double 

Подробнее можно почитать тут и тут.

Отслеживать
ответ дан 17 дек 2019 в 17:48
1,947 5 5 серебряных знаков 24 24 бронзовых знака

неверно. в printf double — это как раз %f , а %Lf — это уже long double . Спецификатора формата %lf в принципе нет.

17 дек 2019 в 19:10

преобразовывать в double . и да для scanf 'а значения спецификаторов отличаются. это один из старых квирков Си.

17 дек 2019 в 19:31

@Πανμέτρονάριστον Можно тоже как %f . При передаче float в сишный . -параметр он автоматически преобразуется в double . См. en.cppreference.com/w/cpp/io/c/fprintf

17 дек 2019 в 19:31

@Fat-Zer Посмотрел cppreference. Там написано, что %lf есть (добавили в C++11/C99), и не отличается от %f (оба могут и в float и double ).

17 дек 2019 в 19:34
@HolyBlackCat, да. моя ошибка. %lf — это тоже что и %f по всем стандартам.
17 дек 2019 в 19:47

Если выводить с помощью СИшного printf("%.9f", res)

Просто используй спецификатор %g:

printf("%.9g", 19./7); // 2.71428571 printf("%.9g", 3./2); // 1.5 printf("%.9g", 8./2); // 4 printf("%.9g", sqrt(10101)); //100.503731 

Стоит помнить, что это 9 значащих цифр, а не 8 цифр после точки. Если нужно именно последнее, то можно сделать как-то так:

double res = sqrt(10101); printf("%.*g\n", 8 + 1 + (int)log10(res), res); // 100.50373127 

Как ограничить число знаков после запятой?

Author24 — интернет-сервис помощи студентам

надо ограничить число знаков до 4-х после запятой. В x[i]. вот программа, а вівод x[i] конечно в конце:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
#include #include #include void main() { int colPos, rowPos; int i, j, k, razm; double max; double temp; int m_nCols; int m_nRows; double** array; double* parray; unsigned int* ListVar; double* x; cout"введите количество уравнений:\n"; cin>>razm; cout"введите расширенную матрицу:\n"; m_nRows=razm; m_nCols=m_nRows+1; parray=new double[m_nRows*m_nCols]; array=new double*[m_nRows]; for (i=0; im_nRows; i++) { *(array+i)=parray+i*m_nCols; } ListVar=new unsigned int[m_nCols-1]; for (j=0; jm_nCols-1; j++) ListVar[j]=j+1; x=new double[razm]; for (i=0; im_nRows-1; i++) x[i]=i+1; for (i=0; irazm; i++) for (j=0;j(razm+1); j++) cin>>array[i][j]; for (k=0; km_nRows-1; k++) { colPos=rowPos=k; max=array[k][k]; for (i=k; im_nRows; i++) for (j=k+1; jm_nCols-1; j++) if (abs(array[i][j])>max) { max=array[i][j]; rowPos=i; colPos=j; } for (i=0; im_nRows; i++) { temp=array[i][k]; array[i][k]=array[i][colPos]; array[i][colPos]=temp; } for (j=0; jm_nCols; j++) { temp=array[k][j]; array[k][j]=array[rowPos][j]; array[rowPos][j]=temp; } temp=ListVar[k]; ListVar[k]=ListVar[colPos]; ListVar[colPos]=temp; for (j=m_nCols-1; j>=0; j--) { array[k][j]/=array[k][k]; } for (j=0; jm_nCols; j++) array[k][j]; for (i=k+1; im_nRows; i++) for (j=m_nCols-1; j>=0; j--) array[i][j]-=array[k][j]*array[i][k]; } double s=0; x[m_nRows-1]=array[m_nRows-1][m_nCols-1]/array[m_nRows-1][m_nCols-2]; for (i=m_nRows-2; i>=0; i--) { s=0; for (k=i+1; km_nRows; k++) s+=array[i][k]*x[k]; x[i]=array[i][m_nCols-1]-s; } cout"\nрешение системы:\n"; for (i=0; im_nRows; i++) cout"X"ListVar[i]"="x[i]endl; }

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

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