2014-09-24 6 views
-2
#include <stdio.h> 
#include <conio.h> 
#include <math.h> 
float t, delt = 0.004000,n; 

printf("enter the value for t="); 
scanf("%f", &t); 
n = t/ delt; 
printf("n is %f",n); 
getch(); 

выход: введите значение т = 1 п 249,999985с плавающей запятой деление на языке C

Я ожидаю 250. Что я делаю не так ??

+0

Возможно, SO должно поместить ссылку на страницу [this] (http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) в качестве липкой наверху – IllusiveBrian

+0

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

ответ

3

Вы столкнулись с общей проблемой, что floating point representations являются приблизительными. Вы можете сделать одно из следующего:

  • Round your answer используя объективную стратегию округления.
  • Обрезайте свой ответ до нулевого десятичного знака перед его печатью (используя что-то вроде %.0f).
  • Используйте арифметическую библиотеку произвольной точности, такую ​​как GMP.

Какой из них разумный полностью зависит от ограничений вашего приложения.

Смежные вопросы