如何控制C printf %e中'e'后面的指数位数?

2024-03-11

我想控制C中'e'后面的指数位数printf %e?

例如,Cprintf("%e") result 2.35e+03, 但我想要2.35e+003,我需要3位指数,我该如何使用printf?

Code:

#include<stdio.h>
int main()
{
    double x=34523423.52342353;
    printf("%.3g\n%.3e",x,x);
    return 0;
}

Result: http://codepad.org/dSLzQIrn http://codepad.org/dSLzQIrn

3.45e+07
3.452e+07

I want

3.45e+007
3.452e+007

但有趣的是,我在 Windows 中使用 MinGW 得到了正确的结果。


“...指数始终包含至少两位数字,并且仅包含表示指数所需的更多数字。...” C11dr §7.21.6.1 8

So 3.45e+07是合规的(OP不想要的)并且3.45e+007不合规(OP想要的)。

由于 C 没有为代码提供改变指数位数的标准方法,因此代码只能自行解决。

各种编译器都支持某些控制。

视觉工作室_set_output_format https://learn.microsoft.com/en-us/cpp/c-runtime-library/set-output-format

为了好玩,以下是DIY代码

  double x = 34523423.52342353;
  //                    - 1 . xxx e - EEEE \0
  #define ExpectedSize (1+1+1 +3 +1+1+ 4 + 1)
  char buf[ExpectedSize + 10];
  snprintf(buf, sizeof buf, "%.3e", x);
  char *e = strchr(buf, 'e');  // lucky 'e' not in "Infinity" nor "NaN"
  if (e) {
    e++;
    int expo = atoi(e);
    snprintf(e, sizeof buf - (e - buf), "%05d", expo);  // 5 more illustrative than 3
  }
  puts(buf);

  3.452e00007

另请参阅C ++如何使用printf获得“一位数字指数” https://stackoverflow.com/questions/8773133/c-how-to-get-one-digit-exponent-with-printf

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何控制C printf %e中'e'后面的指数位数? 的相关文章

  • 数据模板绑定垃圾邮件输出窗口出现错误:找不到管理 FrameworkElemen

    我有问题 System Windows Data 错误 2 找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement BindingExpression 无路径 数据项 空 目标元素是 So
  • 通过 SocketCAN 进行 boost::asio

    我正在考虑利用升压阿西奥 http www boost org doc libs 1 49 0 doc html boost asio html从a读取数据套接字CAN http en wikipedia org wiki SocketCA
  • 如何在 DataColumn.Expression 中使用 IF/ELSE 或 CASE?

    我有一个包含 1 列的表 状态 我想添加另一列名为 Action 的列 其值如下 如果 Status Yes 则 Action Go 否则 Action Stop 我使用以下代码添加到 操作 列中 但它不起作用 myDataTable Co
  • 有没有快速创建集合的方法?

    目前我正在创建一个像这样的新集 std set a s s insert a1 s insert a2 s insert a3 s insert a10 有没有办法创建s在一行 int myints 10 20 30 40 50 std s
  • FileStream 构造函数和默认缓冲区大小

    我们有一个使用 NET 4 用 C 编写的日志记录类 我想添加一个构造函数参数 该参数可以选择设置文件选项 WriteThrough http msdn microsoft com en us library system io fileo
  • 如何在 C# / .NET 中创建内存泄漏[重复]

    这个问题在这里已经有答案了 可能的重复 托管代码中是否可能存在内存泄漏 特别是 C 3 0 https stackoverflow com questions 6436620 is it possible to have a memory
  • 平滑滚动.net 表单

    您好 我正在 net 中使用表单 并且在运行时动态添加大量链接标签 我将这些链接标签添加到面板并将该面板添加到 winform 当链接标签的数量增加时 表单会显示一个自动滚动条 垂直 现在 当我使用自动滚动向下滚动时 表单在滚动时不会更新其
  • 在 Xamarin 中隐藏软键盘

    如何隐藏软键盘以便在聚焦时显示Entry在 Xamarin forms 便携式表单项目中 我假设我们必须为此编写特定于平台的渲染器 但以下内容不起作用 我创建自己的条目子类 public class MyExtendedEntry Entr
  • ASP.NET Web API 客户端 ProgressMessageHandler Post 任务卡在 WinForm 应用程序中

    我在用着HttpClient and ProgressMessageHandler来自MS ASP NET Web API 客户端库 http nuget org packages Microsoft AspNet WebApi Clien
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • 如何在 SqlDataReader.Read() 期间从死锁异常中恢复

    我的 NET 应用程序的事件日志显示 它在从 Sql Server 读取数据时偶尔会出现死锁 这种情况通常非常罕见 因为我们已经优化了查询以避免死锁 但有时仍然会发生 过去 我们在调用ExecuteReader函数在我们的SqlComman
  • 为什么这个没有特殊字符的正则表达式会匹配更长的字符串?

    我正在使用此方法来尝试查找匹配项 例如 Regex Match A2 TS OIL TS OIL RegexOptions IgnoreCase Success 我得到了真实的结果 我很困惑 我认为这应该返回 false 因为模式中没有特殊
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • Visual Studio Code:如何配置 includePath 以获得更好的 IntelliSense 结果

    我是使用 Visual Studio Code 的完全初学者 我不知道我在做什么 我已经四处搜索 也许还不够 但我找不到像我这样的人如何配置的简单解释c cpp properties json每当我单击带有绿色波浪线下划线的行旁边的黄色灯泡
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • 如何在c的case语句中使用省略号?

    CASE expr no commas ELLIPSIS expr no commas 我在c的语法规则中看到了这样的规则 但是当我尝试重现它时 int test float i switch i case 1 3 printf hi 它失
  • IEnumerable.Except 不起作用,那么我该怎么办?

    我有一个 linq to sql 数据库 非常简单 我们有 3 个表 项目和用户 有一个名为 User Projects 的连接表将它们连接在一起 我已经有了一个获得的工作方法IEnumberable
  • 更改 Windows Phone 系统托盘颜色

    有没有办法将 Windows Phone 上的系统托盘颜色从黑色更改为白色 我的应用程序有白色背景 所以我希望系统托盘也是白色的 您可以在页面 XAML 中执行此操作
  • 在简单注入器中解析具有自定义参数的类

    我正在使用以下命令创建 WPF MVVM 应用程序简易注射器作为 DI 容器 现在 当我尝试从简单注入器解析视图时遇到一些问题 因为我需要在构造时将参数传递到构造函数中 而不是在将视图注册到容器时 因此这不是适用的 简单注入器将值传递到构造
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁

随机推荐

  • 尝试从 Windows 服务读取 IIS 站点的 web.config 文件

    我正在尝试寻找一个特别的web config安装在本地 IIS 上的网站的文件 我通过 Windows 服务进行此搜索 我执行以下操作 using ServerManager serverManager new ServerManager
  • Android 无法正确连接 MySQL 数据库

    我正在尝试了解从 MySQL 服务器发送和接收数据的 Android 应用程序的基础知识 我的实现与本学习示例无关 这是到目前为止的代码 package com davekelley polling import java io Buffe
  • 在 DQL 中加入并计数

    我有一个 MySQL 命令 但在 DQL 中找不到等效命令 我正在尝试获取评论最多的帖子列表 这是 MySQL 命令 SELECT posts id COUNT comments id AS num FROM posts LEFT JOIN
  • HP 强化 XML 外部实体注入

    Hp fortify 通过以下代码向我展示了 XML 外部实体注入 StringBuilder sb new StringBuilder StringWriter stringWriter new StringWriter sb xmlSe
  • 在android上显示圆形进度条(实心圆圈)

    如何在android上显示填充的圆形进度条 进度条应该像圆圈一样填充 而不是像环一样 并且应该具有可自定义的功能 例如动画计时动画插值器等 该项目有助于在 android 5 棒棒糖 及更高版本上显示一个简单的填充圆形进度条 它是高度可定制
  • 限制Socket io连接数

    是否可以限制nodejs中的套接字io连接数 我知道可以通过更改服务器 TCP 设置来配置限制 但我正在寻找一种在 nodejs 中执行此操作的方法 你可以很容易地实现它 var connectionsLimit 1 io on conne
  • Django/python 和 Apache Solr:pysolr 还是 solrpy?

    这个论坛是全新的 这是我的第一篇文章 在工作中 我们正在启动一个使用 Apache Solr 的项目 我负责前端系统 基于 Django 我们的 solr 数据库与任何其他数据库引擎或任何模型类都不相关 因此 Haystack 对我们不利
  • 使用node-http-proxy的默认路由?

    我想做一个简单的 Node js 反向代理来托管多个 Node JS 应用程序以及同一端口 80 上的 apache 服务器 所以我找到了这个示例here http nerdpress org 2012 04 20 hosting mult
  • 包括_str!设置“字符串文字”路径

    我必须运送一个json and a toml我的 Rust 二进制文件中的文件 它是一个独立的应用程序 人们不想在运行时传递配置文件 include str 做我想做的事 我可以写 static SETTINGS FILE STR str
  • 如何使用 ZeroMQ 处理原始 UDP?

    我有一个客户 我无法更改其代码 但我想使用 重新 编写ZeroMQ插座 客户使用原始TCP和原始的UDP插座 我知道我可以使用ZMQ ROUTER RAW对于生的TCP插座 但是原始的怎么样 UDP数据流 ZeroMQ 中对 UDP 的支持
  • CSS 不适用于 xhtml2pdf Django

    我正在尝试改进由以下人员创建的生成的 PDFxhtml2pdf和一些CSS style in my Django Project 我想例如justify a text block 但显然 它不起作用 我不知道为什么 我正在阅读大量有关该库的
  • 使用 POST 创建 HTML 表格

    我正在尝试创建一个网页 该网页接受用户输入 将其发布到创建页面 然后创建另一个在 html 表中显示数据的网页 我正在使用 file put contents 创建网页 每当我尝试包含一个循环来获取要输出的 3 个 td 的内容时 我都会收
  • “e 是 65537 (0x10001)”是什么意思?

    我想知道输出是什么e is 65537 0x10001 方法 它发生在 RSA 密钥生成过程中 使用openssl genrsa 我知道这些点意味着该数字已经通过了探针除法 并且在通过米勒 拉宾测试后打印出了加号 但我无法弄清楚 RSA 密
  • 循环和数组格式

    我刚刚完成了我必须为课堂编写的程序 该程序应该从用户那里获取 ID 和 日期 的输入 我的老师要求我们在这两个部分中放置一个循环 以防用户没有输入正确的 ID 日期 我已经将程序编写到可以接受输入的位置 但它无法区分输入是否有效 并将继续执
  • 如何读取等待 dropzone 的文件列表并按顺序上传

    我正在使用 拖放 上传多个图像dropzone js 在这里我保留了autoProcessQueue to false进行自定义上传 现在我正在寻找如何获取我选择上传的队列列表 原因是我需要一个接一个地上传文件 以便保持顺序 我可以保留选择
  • git 添加 .给我总线错误(核心转储)

    我正在使用 ubuntu 并尝试将我的代码放在 github 上 但是当我尝试使用 git add 时 命令时 我收到错误 总线错误 核心转储 joannah joannah Inspiron N5040 Macerdo git init
  • 图 Api - 401 未经授权

    刚刚开始使用 graph office API 哇 这是一个雷区 只是想知道是否有人可以给我任何建议 当我尝试联系时收到 401https graph microsoft com beta me files https graph micr
  • 如何将资产文件夹中的文件路径传递给文件(字符串路径)? [复制]

    这个问题在这里已经有答案了 可能的重复 Android 如何确定资产中特定文件的绝对路径 https stackoverflow com questions 4744169 android how to determine the abso
  • 角度引导模态掩码形式

    我正在尝试在范围内获得角度形式来验证验证等 基本情况 假设我有以下 HTML
  • 如何控制C printf %e中'e'后面的指数位数?

    我想控制C中 e 后面的指数位数printf e 例如 Cprintf e result 2 35e 03 但我想要2 35e 003 我需要3位指数 我该如何使用printf Code include