鍍金池/ 問答/C  HTML/ C pow函數(shù)的問題

C pow函數(shù)的問題

我調試的時候pow(10,3)換成整數(shù)變成99....double就是100 這是為什么?
不是很懂,pow出來雖然是double類型,但是又沒有小數(shù)點,怎么會變成99 pow(10,4)數(shù)貌似就是999,以此類推
環(huán)境:windows 10,編譯器 mingw
編譯參數(shù):gcc -Wall -fexec-charset=GBK test.c -o test.exe
兩個代碼如下

#include <stdio.h>
#include <math.h>
int str2int(const char* str,int len){
    int result=0;
    for(int i=0;i<len;i++){
        result+=(str[len-i-1]-48)*pow(10,i);
    }
    return result;
}

int main(){
    printf("%d\n",str2int("12345",5));//結果為12343
    getchar();
    return 0;
}
//無問題
#include <stdio.h>
#include <math.h>
int str2int(const char* str,int len){
    int result=0;
    for(int i=0;i<len;i++){
        double t=pow(10,i);
        result+=(str[len-i-1]-48)*t;
    }
    return result;
}

int main(){
    printf("%d\n",str2int("12345",5));//12345 正確
    getchar();
    return 0;
}

圖片描述
圖片描述

回答
編輯回答
葬愛

Ubuntu 下編譯你這個程序沒有出現(xiàn)你說的問題

2017年9月12日 17:18