|
藍森林 http://www.lslnet.com 2006年6月6日 10:18
如何將「字符串」轉換為「浮點數」?
我用sscanf()能將字符串轉換為浮點數,但是只能轉換8位,多於8位轉換出來的浮點數就不正確了!
用atof()和 strtod() 也不行!
請問還有什麼可用的函數嗎?是不是我用的方法錯了,能給例子出來嗎??
我要求能把%11.2f的數字轉換出來,例如:12345678901.05的字符串轉為浮點數正確顯示出來。
謝謝!! |
如何將「字符串」轉換為「浮點數」?
32位FLOAT保存不了那麼多吧
自己先寫程序看看一個float能不能放還先 |
如何將「字符串」轉換為「浮點數」?
我試過了,只能放8位數,小數點的好像是6位。。。
要是不用float用double的話,顯示的數字是錯誤的。 |
如何將「字符串」轉換為「浮點數」?
用下面的代碼試試看
[code]
int i, slen;
double result1, result2;
result1 = 0.0f;
slen = strlen( str );
for( i = 0; i < slen; i++ ) {
if( str[ i ] == '.' )
break;
if( isdigit( str[ i ] ) == 0 )
return (double)0.0f;
result1 = result1 * 10.0f + ( str[ i ] - 0x30 );
}
result2 = 0.0f;
for( i = ( slen - 1 ); i >;= 0; i-- ) {
if( str[ i ] == '.' )
break;
if( isdigit( str[ i ] ) == 0 )
return (double)0.0f;
result2 = ( result2 + ( str[ i ] - 0x30 ) ) * 0.1f;
}
if( i < 0 )
result2 = 0.0f;
return ( result1 + result2 );
[/code] |
如何將「字符串」轉換為「浮點數」?
定義成double看看
另外精華區的printf用法可以一看 |
如何將「字符串」轉換為「浮點數」?
我用atof()搞定了,原來出錯的原因是沒有加上#include <stdlib.h>; 這個頭文件,但是為什麼沒加的時候可以調用atof()呢??而只有加上#include <stdlib.h>;後沒問題了。。。
斑竹能解釋解釋嗎? |
如何將「字符串」轉換為「浮點數」?
沒加時link是不是有警告
沒加時一般會把這個函數的返回值當成是int
我想可能是這個原因 |
如何將「字符串」轉換為「浮點數」?
atof函數是在stdlib.h中申明的。在僅僅有stdio.h的情況下,最終atof這個函數從 llib-lc.c(375)中連接來的,因此也沒有報錯。我猜想,可能是因為庫 llib-lc.c(375)中對於atof的數據類型的處理存在限制,也就是能夠處理的數據類型很有限。如果水能知道具體的原因,請告知。 |
如何將「字符串」轉換為「浮點數」?
藍色鍵盤,你好厲害,我DDDDDD你 |
| |