如何在 C 中关闭指数符号?
Posted
技术标签:
【中文标题】如何在 C 中关闭指数符号?【英文标题】:How can I turn off Exponenntial Notation in C? 【发布时间】:2019-07-24 11:27:15 【问题描述】:please enter num1 , op , num2
2e2+6
result= 206.000000
Process returned 0 (0x0) execution time : 8.657 s
Press any key to continue.
(如何使用)...任何方式来关闭它!
【问题讨论】:
不清楚你在问什么。请edit您的问题显示您的代码(复制并粘贴为文本)、输入、实际输出和预期输出。 请出示您的代码。你在说什么?scanf
?请阅读此:How to Ask 和此:minimal reproducible example
请不要在评论中回答。根据要求重新阅读我的第一条评论和edit您的问题。
您可能正在使用float
或double
值。您可能想要使用 int
或类似名称。
你需要使用浮点数吗? (例如2.5+6
)请edit您的问题添加所有这些信息。 不要在 cmets 中回答。所有相关信息都必须在问题中。
【参考方案1】:
您不能直接执行此操作,scanf
函数族没有标准格式说明符,它拒绝 1e3
或 double
的科学记数法(例如 1e3
),并且没有直接的方法来“转off" scanf
s 接受科学计数法的数字。
您可以做的是将输入读取为字符串。然后检查字符串是否包含“E”或“e”,如果是则拒绝。
这种幼稚的方法应该让你知道你可以做什么:
#include <stdio.h>
#include <string.h>
int main()
float x = 0;
do
char buffer[100];
scanf("%s", buffer);
if (strchr(buffer, 'E') != NULL || strchr(buffer, 'e') != NULL)
printf("Rejected\n");
else
sscanf(buffer, "%f", &x);
break;
while (1);
//...
除了明确检查E
和e
的存在之外,您还可以检查是否存在任何非数字和非小数点字符,如果缓冲区包含@987654329 中未包含的任何字符,IOW 将拒绝@
当然你最终应该把这个功能放到一个函数中。
【讨论】:
"%f"
也接受指数符号,例如 0x1.23p5
。建议检查还包括"Pp"
。以上是关于如何在 C 中关闭指数符号?的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI 2 - 如何防止顶部部分在 macOS 和 iPadOS 的列表中关闭