我想表达根据科学计数法四舍五入的最终产品。 因此,如果80.55和879.5689给出70849.281250,则最终打印功能将输出70849.28。
是否可以获取两个输入的浮点数的小数位数? (我从技术上说,他们没有小数位,但是有可能吗?)如果我有两个整数声明为每个小数位数,则可以比较使用if / else并获得至少一个声明为另一个整数,但我又一次不知道如何使用int代替5:%.5f
答案 0 :(得分:0)
如何获取浮点值的小数位数?
有没有办法获取两个输入的浮点数的小数位数?
将用户输入的行读取到 string 。强烈推荐fgets()
。
使用strchr()
或辅助代码搜索小数点,并使用"%n"
搜索数字的末尾。
也许:
static int find_prec(const char *s, int length) {
for (int i=0; i < length; i++) {
if (s[i] == '.') {
i++;
int p = 0;
while (isdigit((unsigned char) s[i+p])) {
p++;
}
return p;
}
}
return 0;
}
...
if (fgets(buffer, sizeof buffer, stdin)) {
double x[2];
int n[2];
if (sscanf(buffer, "%f%n %f%n", &x[0], &n[0], &x[1], &n[1]) == 2) {
int num_dp[2];
num_dp[0] = find_prec(buffer, n[0]);
num_dp[1] = find_prec(buffer + n[0], n[1] - n[0]);