Neden Basel sorun her zaman aynı sayıda gösterir?

oy
0

Bu neden işe yaramadığını söyleyebilir misiniz? rağmen ben farklı 'numaralarını' seçim, ben Basel problemden Pi sayısını göstermek zorunda, ancak bu program aynı numara her zaman gösterir neden bilmiyorum. Çok teşekkürler!

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define Pi 3.14159
int main()
{
    int number;
    printf(max number: );
    scanf(%d,&number);
    float euler;
    float sum=0;
    for(int i=1; i<number;i++)
    {
        sum=sum + (1/(i*i));
    }
    euler=sqrt(6*sum);
    printf(Euler: %lf \n,euler);
    printf(Pi from math library = %f,Pi);
    return 0;
}
Oluştur 27/11/2018 saat 18:19
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
3

Sorun ifadesi olduğunu (1/(i*i))tam sayı matematik kullanılarak hesaplanır. Diğer bir deyişle, sonuç her zaman bir tam sayı olduğu ve herhangi bir değeri için i1 'den büyükse, sonuç her zaman 0 olacaktır.

En basit düzeltme olarak bu ifadeyi yeniden yazmak olduğunu (1.0f/(i*i)). Bu kozlarını ibir sonucu dönüştürmek floatve sonra bölünme yok.

Cevap 27/11/2018 saat 18:26
kaynak kullanıcı

oy
0

yayınlanan kod karıştırma olduğunu integerile bölünme doubledeğişmez ve olmaya sonuç bekliyorfloat

aşağıdaki önerilen kod:

  1. derleninceye
  2. uygulanan işlevleri gerçekleştirir

ve şimdi, önerilen kod

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// define a float value rather than a double value
#define Pi 3.14159f

int main( void )
{
    int number;
    printf("max number: ");
    scanf("%d",&number);

    float euler;
    float sum=0;

    for(int i=1; i<number;i++)
    {
        // perform float math rather than integer math
        sum=sum + (1.0f/(float)(i*i));
    }

    euler=sqrtf(6*sum);  // < note float version rather than double version
    printf("Euler: %lf \n",euler);
    printf("Pi from math library = %f",Pi);
    return 0;
}
Cevap 27/11/2018 saat 18:39
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more