değil zemin tüm çiftler int türüne kapsamaz: Neden C kodu Verilen C
#include <math.h>
#include <stdio.h>
int main(){
int i;
double f=log(2.0)/log(pow(2.0,1.0/2.0));
printf("double=%f\n",f);
printf("int=%d\n",(int) f);
}
Ben çıktı alın:
double=2.000000
int=1
f görünüşte en az 2.0 olduğunu. Neden dökme değeri 2 değil mi?
olduğunu soru cevaplardan, yanlıştır. gerçek "sorun" Printf kayan nokta sayıları yuvarlar olmasıdır. – user35702
Ayrıca, int'nin aynı boyuta sahip olduğu ve log ((double) int_64_variable) 'gibi bir şey yaptığınız bir durumu da düşünebilirsiniz. Bunun için bir c programı yazmaktan daha bir kağıt parçası üzerine bunu daha eğilimli duyuyorum. ;) – sjsam
Ayrıca, "int" işlevinin * yapılmadığını, ancak sıfıra doğru kaydığını unutmayın. Bu olumsuz değerler için önemlidir. – jamesdlin