帮我写一个数字字符串转十进制的代码,含小数keil
时间: 2024-11-22 19:45:27 浏览: 13
基于Keil的指针数组作为函数的参数显示多个字符串.rar(源码)
当然可以。在Keil uVision等嵌入式开发环境中,我们通常会编写C语言函数来将数字字符串转换成浮点数(包括小数部分)。这里是一个基本的示例,它使用`atoi()`函数获取整数部分,然后手动处理小数点后的部分:
```c
#include "stdio.h"
#include "string.h"
// Function to convert a string to decimal number with decimal point
float str_to_decimal(const char *str) {
int num_int = 0;
float num_float = 0.0;
int i = 0, j = 0;
// Iterate through the string
while (str[i]) {
if (str[i] == '.') { // Check for decimal point
j = i + 1; // Move to next digit after decimal point
break;
} else if (isdigit(str[i])) {
num_int = num_int * 10 + (str[i] - '0'); // Convert ASCII to integer
}
i++;
}
// If there's no decimal point, treat it as an integer
if (j == 0)
return (float)num_int;
// Convert the integer part into a float and then add the fractional part
num_float = (float)num_int;
while (j < strlen(str)) {
num_float += (str[j] - '0') / pow(10.0, ++i); // Add each digit to the fraction
j++;
}
return num_float;
}
int main(void) {
const char *input_str = "123.456";
float decimal_value = str_to_decimal(input_str);
printf("Decimal value: %.2f\n", decimal_value); // Output up to two decimal places
return 0;
}
```
在这个例子中,输入字符串如"123.456"会被转换成123.46。请注意,这个函数假设输入字符串的格式正确。在实际项目中,你可能需要增加错误检查和边界条件处理。
阅读全文