编一个C语言程序,验证一个浮点数,按%m.nf和%m.ne格式输出
时间: 2024-10-13 15:03:28 浏览: 31
c代码-%m.nf的解读
在C语言中,你可以编写一个简单的函数来验证并格式化浮点数。下面是一个示例程序,它会接收一个浮点数作为输入,并按照`%m.nf`和`%m.ne`格式进行输出,其中`m`表示整数部分的小数位数,`.nf`用于固定小数点后的位数,`.ne`则省略小数部分如果为0:
```c
#include <stdio.h>
#include <math.h>
// Function to format and validate float number
void format_float(float num, int precision) {
// Check if the number is finite
if (!isfinite(num)) {
printf("Invalid floating-point number\n");
return;
}
// Split into integer and fractional parts
long int integer = (long int)num;
double fraction = modf(num, &integer);
// Format with specified precision
char buffer[64]; // Enough for most cases
snprintf(buffer, sizeof(buffer), "%ld", integer);
if (fraction > 0) {
snprintf(buffer + strlen(buffer), precision, ".%*f", precision, fraction);
} else if (precision > 0 && fraction == 0) {
// If no decimal part, add a dot for .ne format
buffer[strlen(buffer)] = '.';
buffer[strlen(buffer) + precision] = '\0';
}
printf("%s\n", buffer); // Output formatted number
}
int main() {
float input;
printf("Enter a floating-point number (or 'q' to quit): ");
while (scanf("%f", &input) == 1 && input != 'q') {
int precision; // User-specified precision
printf("Format: %m.nf or %m.ne (enter 'p' for default 2): ");
scanf("%*[^\n]%d", &precision);
format_float(input, precision > 0 ? precision : 2); // Use default of 2 if not specified
}
return 0;
}
```
在这个程序里,用户可以输入一个浮点数,然后选择`%m.nf`或`%m.ne`格式,还可以指定小数位数(默认为2)。如果输入的是非数字字符或'q',则退出循环。
阅读全文