如何在 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您的问题。 您可能正在使用floatdouble 值。您可能想要使用 int 或类似名称。 你需要使用浮点数吗? (例如2.5+6)请edit您的问题添加所有这些信息。 不要在 cmets 中回答。所有相关信息都必须在问题中。 【参考方案1】:

您不能直接执行此操作,scanf 函数族没有标准格式说明符,它拒绝 1e3double 的科学记数法(例如 1e3),并且没有直接的方法来“转off" scanfs 接受科学计数法的数字。

您可以做的是将输入读取为字符串。然后检查字符串是否包含“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);
  //...

除了明确检查Ee 的存在之外,您还可以检查是否存在任何非数字和非小数点字符,如果缓冲区包含@987654329 中未包含的任何字符,IOW 将拒绝@

当然你最终应该把这个功能放到一个函数中。

【讨论】:

"%f" 也接受指数符号,例如 0x1.23p5。建议检查还包括"Pp"

以上是关于如何在 C 中关闭指数符号?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VC++ 项目中关闭 Unicode?

SwiftUI 2 - 如何防止顶部部分在 macOS 和 iPadOS 的列表中关闭

如何在 Visual Studio 2010 中关闭远程调试?

在 Gson 双序列化中关闭科学记数法

如何在java中关闭当前工作目录(不是完整路径)[关闭]

如何在线程中关闭 QWebSocket?