【发布时间】:2021-05-31 11:58:28
【问题描述】:
我在输入字符串中放置小数点时遇到问题。请参考我的代码以便更好地理解。 说明:该字段的宽度应为八 (8) 位,右对齐,填充零。最左边的数字表示小数分隔符应从右移的位置数。
预期的结果应该是这样的: 示例 1:71234567 输出 0.1234567
示例 2:31234567 输出:1234.567
但是当我用上面的例子运行我的代码时,我得到了低于输出。 输出 1:0.123457 输出2:1234.567000
它不应该需要在右侧附加零。为什么会发生这种情况。谁能告诉我。
附上我的代码sn-p:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
int main()
{
unsigned char str[8] = "31234567";
int num = atoi(str); //Convert string to int
printf("num = %d\n",num);
int FirstDigit = num;
num = num % (unsigned long)pow(10.0, (double)floor(log10(num)));
printf("After removing 1st digit from number = %d\n",num);
while(FirstDigit>=10)
{
FirstDigit = FirstDigit/10;
}
printf("Decimal position stored in FirstDigit = %d\n",FirstDigit);
printf("Final value = %f",num/pow(10,FirstDigit));
return 0;
}
【问题讨论】:
-
将输入视为以数字开头的字符串,例如
"4abcdef" -
我需要了解我的代码有什么问题。如果有人能告诉我们修改后的代码,我将不胜感激。谢谢!
-
您好,您正在获得默认的浮点格式...如果您想要特定数量的数字,您需要使用不同的格式字符串 - 例如 "%.2f" 在后面给出两个位置小数点.. 请参阅 (en.cppreference.com/w/c/io/fprintf) 或 (stackoverflow.com/a/67457936/15310387) 了解更多详情
标签: c