#include <math.h>
#include <stdio.h>
void main() {
int decimal, count, binary, digit;
printf("Enter the number : ");
scanf("%d", &decimal);
count = 0; binary = 0;
while (decimal > 0) {
digit = decimal % 2;
binary = binary + digit * pow(10, count);
decimal = decimal/2;
++count;
}
printf("Binary form : %d", binary);
}
我使用上面的代碼將十進制轉換爲二進制。但是,問題在於輸出。功能錯誤
Input : 12
Expected Output : 1100
Actual Output : 1099
[IMG] https://i.imgur.com/1mZlMQN.png[/img]
此問題持續其他輸入太。只有8個給出正確的輸出。
那麼有人可以解釋爲什麼會發生這種情況?當我將它移植到C++中時,這個錯誤也會顯示出來。
PS:在使用pow
檢查數字是否是Armstrong及其迴文時,此錯誤也會彈出。
你確定嗎?這甚至不可能... –
https://repl.it/LLhY/0我得到'1100' – kaza
你不想使用'pow'這種東西。保持運行乘數,每次乘以2或10。 'pow'有不準確之處。 –