C에서 코드를 사용하는 데 문제가 있습니다. 숫자를 변환하지 않습니다. 이것은 주어진 수를 다른 기준으로 다른 수로 변환하는 유클리드 알고리즘입니다. "정밀도"는 쉼표 뒤의 자릿수입니다. 상기베이스 (10) I (170)와, 예를 들면 그것을 시도하고 그 결과 I 170하고 싶었을 다수 항상 유클리드 알고리즘과 Horner의 방법으로 숫자 변환
static char convertIntToChar(int number) {
if (0 <= number && 10 > number) {
return number + '0';
}
else if (16 > number) {
return number - 10 + 'A';
}
else {
return '\0';
}
}
"숫자"를위한 입력
: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;
}
문자 번호 변환 (베이스 (10)에 대한 것임)는 AA 인베이스 (16)에 번호로서 리턴된다. 하지만 결과는 is입니다. 문제를 찾아 내도록 도와주세요. 게다가 나는 리눅스를 사용한다. 그래서 gcc 컴파일러를 사용합니다. 또한 Horner의 메서드를 구현하려고하는데 위와 같은 결과가 나타납니다 () Horner의 메서드에 대한 코드입니다.
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;
}
관련 싸리
쉼표로 숫자를 입력하면이 기호가 다시 나타납니다.예를 들어, 제가베이스 10에 15741.233을 입력하면 3D7D 3 (기수 16에 정밀도 4 (쉼표 뒤의 숫자))가 반환되지만 3D7D.3BA5이어야합니다. 왜 그렇게하는지 모르겠습니다. 아무도 이유를 아나요? – Hagi
작은 따옴표를 사용하지 않았습니다. 결과적으로 3D7D.3을 얻었지만 여전히 3 자리가 누락되었습니다. 아무도 이유를 아나요? – Hagi