#include <stdio.h>
#include <math.h>
/* converts to binary using logs */
int main()
{
long int decimalNUM = 0, binaryNUM = 0, exponentNUM = 0;
printf("Enter a number to be converted to binary.\t");
scanf("%ld", &decimalNUM);
fflush(stdin);
int origDEC = decimalNUM;
while (decimalNUM > 0)
{
exponentNUM = (log(decimalNUM))/(log(2));
binaryNUM += pow(10, exponentNUM);
decimalNUM -= pow(2, exponentNUM);
}
printf("\nBINARY FORM OF %ld is %ld", origDEC, binaryNUM);
getchar();
return binaryNUM;
}
STDINが4の場合、99を返します。 IDEONEで100を返します。なぜですか? http://ideone.com/PPZG5C、ログ、バイナリ、および4番です。それらは混在しません
コメントで述べたように、あなたのアプローチは本当に奇妙です:
EDITはそれに2つのリターンナインで何かを
これは正確にログを使用する理由は何ですか?あなたは既にバイナリで番号を*持っています。 –
??助けていない – tekknolagi
浮動小数点演算ルーチンの代わりにビット演算子を使用することを検討しましたか?浮動小数点は丸め誤差の対象となっていることに気が付きます。これは100の代わりに99を得る理由を説明するかもしれません。 –