69,371
社区成员
发帖
与我相关
我的任务
分享
/**
* double 转 char*
* @param number double变量
* @return 返回 char*
*/
char* doubleToStr(double number) {
int num = (int)number; // 取整数部分
// 如果是整数, 调用 numberToStr方法转换为char*
if (num == number) {
return numberToStr(num);
}
double tempNumber = number;
char* tempStr = dos(7);
if (number < 0) {
tempNumber = 0 - tempNumber;
}
tempNumber *= 10;
int i = 0;
int tempNum = 0;
int addNumber = 0;
int index = 7;
for (i = 0;i < 6;++i) {
tempNum = (int)tempNumber;
addNumber = tempNum % 10;
*(tempStr + i) = addNumber + '0';
// 如果这位小数不是0, 那么就将字符串的下一位设置为结束符
if (addNumber != 0) {
index = i + 1;
}
tempNumber *= 10;
}
*(tempStr + index) = '\0';
char* str = dos(50);
strcpy(str, "\0");
if (number > -1 && number < 0) {
strcpy(str, "-");
}
strcat(str, numberToStr(number));
strcat(str, ".");
strcat(str, tempStr);
strcat(str, "\0");
// 释放 tempStr
if (tempStr != NULL) {
free(tempStr);
tempStr = NULL;
}
return str;
}
char* numberToStr(int number) {
char* tempStr = dos(20); // 分配20个内存
if (number == 0) {
*(tempStr + 0) = '0';
*(tempStr + 1) = '\0';
return tempStr;
}
// 判断是否为负数
bool negativeNumber = false;
if (number < 0) {
number = abs(number);
negativeNumber = true;
}
int i = 0;
for (;number != 0;++i) {
*(tempStr + i) = number % 10 + '0';
number /= 10;
}
// 如果是负数, 加上 '-' 号
if (negativeNumber == true) {
*(tempStr + i) = '-';
++i;
}
*(tempStr + i) = '\0';
// 逆序字符串
char* str = reverseStr(tempStr);
// 释放tempStr
if (tempStr != NULL) {
free(tempStr);
tempStr = NULL;
}
return str;
}