Неверный результат после арифметических операций над float - C (СИ)

  1. Добрый день. Возникла проблема, которую я никак не могу понять и решить, а именно: На приложенном скриншоте видно, что последний символ последней строки из нуля обращается в 0.000001, после того как мы предыдущую строку разделили на число 22.333334 и после умножения на -0.000000 прибавили к последней строке. В чем может быть ошибка и как ее решить, чтобы в конце получался ноль? Тип данных везде float. Заранее спасибо.


textual

Код к задаче: «Неверный результат после арифметических операций над float - C (СИ)»

 printf("%.*f", prec, a);

СДЕЛАЙТЕ РЕПОСТ

14   голосов, оценка 3.643 из 5



Похожие ответы
  1. Написала программу, она компилируется, но не даёт результат (текстовые файлы я создала). Помогите, пожалуйста C++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 #include #include #include FILE *f, *f1; int main() {int x, q=0,  sum=0; double l; f=fopen("D:\\TextFile", "rt"); f1=fopen("D:\\rez", "wt"); if(f == NULL)         {           printf("Problems");           system("pause");           return 1;         } if (fscanf(f,"%d",&x)>0)   {sum+=x; q+=1; l=sum/q; }     fprintf(f1," %3lf",l); fclose(f); fclose(f1);   return 0; }

  1. Вставить между цифрами 1,2,3,4...9 знак одной из операций +-*/, так, чтобы результат 8-опреаций равнялся 100. Имеется 8 решений. Распечатать их со знаками. 1*2+3*4*5-6+7+8-9=10

  1. Пытаюсь выполнить проект Win32, в VS 2015 v.14.0. C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include "stdafx.h"   int main() {     float a, b, x;           printf("a-");     scanf("%f", &a);       x = -b / a;     printf("result=%f",x);           return 0;     }В консоли при выполнении выдает: 14285848 Для продолжения нажмите любую клавишу . . . В "списке ошибок": Серьезность Код Описание Проект Файл Строка Состояние подавления Ошибка C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. ConsoleApplication1 c:\users\anton\documents\visual studio 2015\projects\consoleapplication1\consoleapplication1\consoleapplication1.cpp 12 Что не так делаю?

  1. Ввожу разные переменные а результат выдает один и тот же. В чем может причина может я что не так делаюC1 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 #include #include #include      main() {     int a,b,c,m,n,z,x,y;       printf("Vvedite m \n");     scanf("%d", &m);     printf("Vvedite n \n");     scanf("%d", &n);     printf("Vvedite a \n");     scanf("%d", &a);     printf("Vvedite b \n");     scanf("%d", &b);     printf("Vvedite c \n");     scanf("%d", &c);      if (m>n) { x=m; } else x=n;   if (m==n) { x=n*cos(n); } if (m<5) {     y=a; }   else if(m>5)     {       y=c;     }     else y=b; z=pow((pow(x,2)+y),1/3)+pow(2.7,x)-cos(y); printf ("z=pow((pow(%d,2)+%d),1/3)+pow(2.7,%d)-cos(%d)= (%g) /n",x,y,x,y,z);   getch(); }

  1. Объясните , пожалуйста, почему получается 4--C1 2 3 4 5 6 7 8 9 10 11 12 #include #include #include main() { int a=24,b=24,c=-5,d=-1; clrscr(); (d+=b%c)+d++; printf("%d--",d--); getch(); return 0; }

  1. Ребят , помогите , не могу сделать аккуратный вывод столбцов в проге , все сделал кроме столбцов , вот условие задачи /////Найти количество делителей каждого из целых чисел от 190 до 210. Вывести результат в виде следующей таблицы (столбец «Делители» содержит по четыре числа в строке) Число Делители Кол.дел. 99 3, 9, 11, 33 4 100 2, 4, 5, 10, 20, 25, 50 7 101 ... ... Определить наибольшее число из данного интервала, у которого количество делителей максимально.///// Вот код:C1 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 #include   int main(void) {     int i, i1, n, d, c;     n=0;     d=420;     c=0;     printf("Chislo          Deliteli          Kol.del.\n");//по десять пробелов     for (i=400; i<=420; i++){         printf("%d                   ", i);         for(i1=2; i1<=i/2; i1++){             if (i%i1==0){                 n+=1;                 if ((n-1)%4==0 && (n-1)!=0){                     printf(", ");                     printf("\n          ");}//десять пробелов                 else if (n>1)                     {printf(", ");}                 printf("%3d", i1);}}         printf("          ");//десять пробелов         printf("%d\n", n);         if (n<=d && n!=0){             d=n;             c=i;}         n=0;     }     printf("\nNaibolshee chislo s minimalnim kol-vom deliteley: %d\n\n", c);     return 0; }

  1. char *ptr = "hello"; char *ptr это указатель? Указатель. А указатель это переменная которая содержит адрес данных. Почему тогда при печати printf("%s", ptr); выводится строка? По идее нужно было написать так printf("%s", *ptr); что бы увидеть строку(получить данные указателя). Но так выводит ошибку.

  1. Имеется вот такой код :C1 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 #include "stdafx.h" #include "iostream" #include "math.h" #include "locale.h"   float LengthSubrange(float X0, float Y0 , float X, float Y) {     float res, R1,R2;     res = sqrt((X0 - X)*(X0 - X) + (Y0 - Y)*(Y0 - Y));     if ((res >= R1) && (res <= R2))         printf("Tochka prinadlezhit");     else         printf("Tochka ne prinadlizhit");     return res;     }   int _tmain(int argc, _TCHAR* argv[]) {     setlocale(LC_ALL, "rus");     float  X0 = 0,Y, X,  Y0 = 0 , K ,R1, R2;     printf("Введите координату Х точки М : "); scanf("%f", &X);     printf("Введите координату У точки М : "); scanf("%f", &Y);     printf("Введите внутренний радиус R1 : "); scanf("%f", &R1);     printf("Введите внутренний радиус R2>R1 : "); scanf("%f", &R2);     K = LengthSubrange(X0, Y0, X, Y);     system("pause");         return 0; }Определить, принадлежит ли точка M (x, y) кольцу с центром в начале координат, внешним радиусом R1, и внутренним радиусом R2 (R1 > R2). Причем используя функцию пользователя. Я ее описала. Но почему-то,когда я ввожу все необходимые данные,программа вылетает. Прошу указать мне на мои ошибки и помочь решить их.

  1. Code::Blocks 16.01! Програмка из книги Кэрригана и Ритчи - перевод шкалы Фаренгейта в шкалу ЦельсияC1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include       int main() {     int min, max, celsius, fahr, st;     min=0;     max=300;     st=20;     fahr=min;         while (fahr<=max);         {         celsius=5*(fahr-32)/9;         printf("%d\t%d\n", fahr, celsius);         fahr = fahr+st;         }       return 0; }пишу всё по примеру, однако при компиляции, которая проходит тихо, консоль пустая, хотя смею расчитывать на два столбика с данными. Что не так? Спасибо

  1. Помогите написать новичку простые на первый взгляд программы. Операторы цикла for, while, do...while. 1. Сумма цифр двузначного числа равна 11. Если к этому числу прибавить 27, то получится число, записанное теми же цифрами, но в обратном порядке. Составить алгоритм поиска этого числа, если оно существует.