2015-10-26 3 views
-1
#include <stdio.h> 


int main() 
{ 
int x; 
float f1[11], f2[11], s; 

for (x = 1; x <= 10; x++) 
{ 
    f1[x] = (x * x)/4; 
    printf("f1(%d)=%.2f\n", x, f1[x]); 

} 

return 0; 
} 

f1 = (х^2)/4данных в C, потеря данных

Текущий выход:

f1 (1) = 0,00

f1 (2) = 1.00

f1 (3) = 2,00 // и т.д.

Я вроде хочу эти десятичные, хотя.

f1 (1) = 0,25

f1 (2) = 1,00

f1 (3) = 2,25

+1

Или '1.0 * x * x/4'. –

+0

@juanchopanza Это не очень хороший дубликат, потому что он сохраняет результат в переменной int. – Barmar

ответ

1

Что вы делаете со значением не влияет, как это вычислить. Поэтому тот факт, что вы сохраняете результат некоторой математики в double, не изменяет того факта, что вы выполняете целочисленные операции.

Есть много исправлений, но самым простым является, возможно, (1.0 * x * x)/4.0.

+0

'x/4. * x', возможно, проще: меньше операций, хотя и труднее понять. – chqrlie

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