我的代碼在C中遇到了一些麻煩。它不會像原來那樣轉換數字。 這是將給定數字轉換爲具有不同基數的另一個數字的歐幾里得算法。 「精度」是逗號後的數字。通過歐幾里得算法和霍納方法轉換數字
static char* euclid(float number, int base, int precision)
{
//create a buffer for holding the resulting string
char* resultString = createBuffer(number, base, precision);
int numbTemp;
int numbDiv;
float maxExponent = 0;
while (number >= pow((float)base, (float)maxExponent)) {
maxExponent++;
}
maxExponent--;
if (maxExponent < 0) {
maxExponent = 0;
}
while (maxExponent >= 0) {
numbDiv = number/pow(base, maxExponent);
*resultString += converIntToChar(numbDiv);
numbTemp = numbDiv * pow(base, maxExponent);
number -= numbTemp;
maxExponent--;
if(maxExponent < 0 && precision >0) {
*resultString += ",";
while(precision > 0) {
numbDiv = number/pow(base, maxExponent);
numbTemp = numbDiv * pow(base, maxExponent);
*resultString += convertIntToChar(numbDiv);
number = number - numbTemp;
maxExponent--;
precision--;
}
}
}
return resultString;
}
轉換編號以字符:
static char convertIntToChar(int number) {
if (0 <= number && 10 > number) {
return number + '0';
}
else if (16 > number) {
return number - 10 + 'A';
}
else {
return '\0';
}
}
爲「數字」的輸入總是一個號碼到基座10我與170嘗試了例如並且作爲結果,我想有170 (它是到底座10)作爲一個數字返回到底座16,它是AA。 但我得到的結果是 。你能幫我找到問題嗎?除了我使用Linux。所以我使用gcc編譯器。 另外我試圖實施霍納的方法,我得到了與上面相同的結果( ) 我的霍納方法的代碼。
static char* horner(float number, int base, int precision) {
// create a buffer for holding the resulting string.
char* resultString = createBuffer(number, base, precision);
int numbDiv = 0;
int numbTemp = 0;
int numbConv = 0;
do {
numbDiv = number/base;
numbTemp = numbDiv * base;
numbConv = number - numbTemp;
number = numbDiv;
*resultString += convertIntToChar(numbConv);
} while (number != 0);
return resultString;
}
問候 萩
當我用逗號輸入數字時,我再次得到這個符號 。舉個例子,當我輸入15741.233(到底部10)時,我返回3D7D 3(以16爲底,精度爲4(逗號後的數字)),但它應該是3D7D.3BA5。我不知道它爲什麼這樣做。有誰知道爲什麼? – Hagi 2013-05-12 16:43:21
我沒有使用單引號字符。現在,我得到了3D7D.3的結果,但仍然有3位數字丟失。有誰知道爲什麼? – Hagi 2013-05-12 16:49:41