2013-05-27 24 views
2
#include<stdio.h> 
int main() 
{ 
int num = 255; 
num = num/10; 
char buf[5]; 
itoa(num, buf,10); 
printf("%s", buf); 
return 0. 
} 

我想分10個整數,但我得到25(我應該得到25.5)的解決方案。後來我將它轉換爲整數字符串到ASCII函數。我有問題除以10的數字。指導我除以10,然後轉換成一個字符串

+4

整數沒有小數點。你究竟想要做什麼? – Kangkan

+0

您需要先了解[integer](http://en.wikipedia.org/wiki/Integer)是什麼。 – Clifford

+0

你的問題已經有一些答案,請接受一個。 –

回答

2

您需要使用浮點變量來獲得浮點結果。

嘗試

float num = 255; 
num = num/10; 
+0

或者更習慣地說,'num/= 10;' – 2013-05-27 12:03:48

+0

以後如何轉換成字符串? –

1

當存儲浮點值的整數的小數部分被扔掉。因此在num = num/10;中num將是25,因爲它是一個int。

+0

如果我用int代替double,那麼如何轉換成字符串?# –

+0

@chux'float'自動上傳到'double'。 '%lg'不是有效的格式說明符 –

+0

@Tom Tanner,當然你是對的。我正在考慮scanf()。 – chux

0
#include <stdio.h> 
#include <string.h> 

char buffer[20]; 

void main() { 
    float num = 255; 
    num = num/10; 

    sprintf(buffer, "%g", num); 

    printf("%s",buffer); 
} 
+0

謝謝你Param !!! –

1

一個整數除以一個整數是一個整數,所以你得到25作爲結果。您需要將除數或分母先浮動或加倍。

要輸出的浮動安慰你可以使用printf%f%F%e%E%g%G格式字符串。您可能還需要指定寬度和精度(請參閱printf)。

如果您確實需要字符串緩衝區,則可以使用sprintf將結果寫入緩衝區。

#include<stdio.h> 
int main() 
{ 
    float num = 255f; 
    num = num/10; 
    printf("%f\n", num); 
    return 0. 
} 
0

首先,num是(如指出的)整數,所以不能取小數值。

其次,itoa不標準。你應該使用snprintf(這不僅是標準的,它不易受緩衝區溢出的影響)。

所以:

#include <stdio.h> 

int main() 
{ 
    float num = 255; 
    num = num/10; 

    char buf[5]; 
    snprintf(buf, sizeof(buf), "%g", num); 
    printf("%s", buf); 
    return 0. 
} 

會做你想要什麼。

相關問題