如何在 C++ 中显示浮点值的多个前导零? [复制]

2024-01-07

在 C++ 程序中,我想显示一列浮点值,以便符号、数字和小数点全部对齐。必要时,多个前导零应填充每个值的整数部分。例如:

A column of floating point values:
  +000.0012
  -000.0123
  +000.1235
  -001.2346
  +012.3457
  -123.4568

我有一个经过精心注释的测试程序来证明这个问题。但是,当我编辑这篇文章时,我在这里找到了我需要的答案:
- 使用 printf 打印浮点数时额外的前导零? https://stackoverflow.com/questions/2486410/

根本问题是我使用的格式代码为"%+04.4f"当我应该使用"%+09.4f",因为我想要的总字段宽度是 9:

  • 1 为标志
  • 3 表示所有数字
  • 1 为小数点
  • 4 表示小数位

我没有足够的声誉点来评论该帖子,所以在这里谢谢你,@AndiDog。

我仍然不知道如何仅使用流格式化标志来获取多个前导零。但这是另一天的战斗。我现在将坚持使用 printf 和 Stream 的混合。


有几条评论提到std::setfill('0') and std::setw。虽然这些are必要的,但它们不足以完成任务。例如,这段代码:

std::cout << std::setfill('0') << std::setw(7) << std::showpos << 0.012;

将产生:0+0.012作为其输出。这显然不完全是我们想要的。

我们需要添加std::internal标志告诉流插入“内部填充”——即填充应该插入在符号和数字的其余部分之间,所以代码如下:

std::cout << std::setfill('0') << std::setw(7) << std::internal << std::showpos << 0.012;

...产生我们想要的输出:+00.012.

另请注意,填充字符是“粘性”的,因此如果您交替使用std::setw对于数字和非数字类型,您可能每次都需要/想要更改它。否则,类似的事情std::cout << setw(12) << name;将产生如下结果:0000000Jerry,这也是很少需要的。

为了确保小数点后的位数始终相同,我们还需要设置std::fixed标志,并指定位数std::setprecision, 例如:

#include <iostream>
#include <iomanip>
#include <vector>

int main() {
    std::vector<double> values { 0.1234, 1.234, 1.5555 };

    for (auto d : values)
        std::cout << std::internal << std::showpos << std::setw(9) 
                  << std::setprecision(3) << std::setfill('0') << d << "\n";
}

这会产生我认为需要的输出:

+0000.123
+0001.234
+0001.556

但在一种情况下,您将无法通过这种方式获得对齐的结果:如果您的数字太大而无法放入所提供的字段中,则仍将打印小数点之前的所有位。例如,如果我们添加1e10对于前面的代码要打印的数字列表,它将打印为:+10000000000.000,这显然与其他部分不一致。

处理这个问题的明显方法就是忍受它,如果它经常出现而需要关心,则增加字段大小以容纳更大的数字。

另一种可能性是仅在数字低于特定阈值时使用固定记数法,并针对较大的数字切换到(例如)科学记数法。

至少根据我的经验,这样的代码往往主要用于财务数据,在这种情况下,后一种选择通常是不可接受的。

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

如何在 C++ 中显示浮点值的多个前导零? [复制] 的相关文章

  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • 访问私人成员[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过将类的私有成员转换为 void 指针 然后转换为结构来访问类的私有成员是否合适 我认为我无权修改包含我需要访问的数据成员的类 如果不道德 我
  • 当我使用“control-c”关闭发送对等方的套接字时,为什么接收对等方的套接字不断接收“”

    我是套接字编程的新手 我知道使用 control c 关闭套接字是一个坏习惯 但是为什么在我使用 control c 关闭发送进程后 接收方上的套接字不断接收 在 control c 退出进程后 发送方的套接字不应该关闭吗 谢谢 我知道使用
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • 如果使用 SingleOrDefault() 并在数字列表中搜索不在列表中的数字,如何返回 null?

    使用查询正数列表时SingleOrDefault 当在列表中找不到数字时 如何返回 null 或像 1 这样的自定义值 而不是类型的默认值 在本例中为 0 你可以使用 var first theIntegers Cast
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐

  • moment.js isValid 函数无法正常工作

    我有这个问题 我没有找到任何类似的东西 而且似乎很奇怪没有人在使用 moment js 验证时间时遇到这个问题 moment 03 55 HH mm isValid true moment 03 55jojojo HH mm isValid
  • 检查数组中每个文本框的标签

    如何检查数组中所有 TextBox 控件的 Tag 属性 我想要这样的东西 If textBox Tag And textbox2 Tag And textbox21 Tag And textbox22 Tag And textbox23
  • CSS“snap-scroll”干扰 jQuery“.animatescrollLeft”

    我有一个 html 和 css 滑块 我正在使用scroll snap用于手动滚动和用于自动滚动的 jQuery 按钮 然而 当使用scroll snap type x mandatory jQueryscrollLeft动画变得极其滞后或
  • AngularJS 数据绑定不起作用 - 在控制器范围内变量未显示输入的值

    我有一个奇怪的情况 scope变量绑定似乎没有按预期工作 这是 HTML div class input group style width 100px div
  • 初始化哈希值

    我经常写这样的东西 a hash x a hash x some more text a hash x first text 应该有更好的方法来做到这一点 但我找不到 有两种方法可以为 a 创建初始值Hash 一种是将单个对象传递给Hash
  • 相当于 ftp put 并追加到 scp 中

    我有一个我无法理解的遗留脚本 该脚本是将unix中的4个文件 2个ebcdic格式文件和2个pdf文件 通过ftp传输到主机上 ebcdic format file 1 is abc xyz ebcdic format file 2 is
  • DLL、内存映射、基地址、内存使用和.NET?

    在开始真正的问题之前 我想说的是 我可能会弄错一些细节 如果是这样 请逮捕我 甚至不要回答我的问题 我的问题基本上是关于 DLL 和 NET 我们有一个应用程序使用了大量内存 我们正在尝试找出如何正确测量内存的方法 特别是当问题主要发生在客
  • 列出 MySQL 表外键的高效方法?

    有没有表演者如何获取分配给 MySQL 表的外键列表 查询信息模式 SELECT column name referenced table schema AS foreign db referenced table name AS fore
  • Linq To Sql:异常“字符串必须恰好是一个字符长”

    考虑使用以下定义的 SQL Server 表varchar 1 NULL场地 它被用来存储性别特征 有些行有数据 有些没有 要么为空 要么为空白 授予空白应该为空 但请考虑空白在这里是一个有效值 我更希望该值为空 ID Gender 1 M
  • awk 减少系统依赖性

    如果我没记错的话 awk 会根据操作系统语言解析数字 例如 echo 1 2 awk printf f n 1 在英语系统中将被解释为 1 在用逗号分隔整数和小数部分的系统中将被解释为 1 2 我不知道C printf是否也这样做 所以我添
  • 访问 iOS 中最近使用的表情符号列表

    在 iOS 中 在原生表情符号键盘中 您可以看到最近使用的表情符号 我想知道是否可以从我的应用程序内部获取这些表情符号 独立于应用程序 的数据 我的目标是在我的应用程序中显示给定用户最常用的表情符号 如果您只想要一个表情符号选择器 您可以使
  • Log4Net停止记录,如何恢复?

    我遇到了 log4net c WinForms 的问题 如果出现短暂故障 例如由于 VMware 快照 网络共享在几秒钟内无法访问 它会停止记录 并且似乎没有记录的方法可以从此类故障中恢复中断 它只是停止记录 直到应用程序重新启动 版本 v
  • 验证地点所有者 Google Places API

    我正在计划一个应用程序 企业所有者可以在其中注册自己的位置 我想使用 Google Places API 来获取企业信息 这样 当新用户在应用程序中注册时 他会提供其位置的 ID 然后应用程序会从 API 检索该信息 我将需要某种方法来验证
  • 如何使用处理和 Twitter4j 从用户时间线获取 20 多个结果?

    我正在尝试制作一个草图 从特定用户的 Twitter 时间轴中获取最后 100 条推文 我正在使用 Twitter4j 草图工作正常 但我了解到 Twitter4J 默认情况下将时间线结果限制为 20 我已经看到此页面来了解如何在使用查询时
  • 从 WSL 选择 Python 解释器

    我使用的是 Windows 10 并且希望将 Python 的默认 VSCode 解释器设置为与我的 WSL 2 Ubuntu 中使用的解释器相同 以便我始终使用 一个 Python 当我单击 选择 Python 解释器 时 会出现查找解释
  • 有没有办法防止回调在破折号中触发?

    我有以下回调 app callback Output useridPicker value Output datePicker date Input url search def update form default url search
  • 使用 Google 位置 API

    请原谅我的无知 但经过几个小时的搜索 我运气不佳 无论如何 我正在尝试编写一个小型桌面应用程序 允许用户输入地址 然后以 GPS 坐标返回其大致位置 据我所知 Google 提供了一个地理编码 API 1 允许以下形式的请求 http ma
  • 在 pandas 数据框中添加一个具有 MultiIndex 列的字段

    我一直在寻找这个问题的答案 因为它看起来很简单 但还没有找到任何东西 如果我错过了什么 抱歉 我有 pandas 版本 0 10 0 并且我一直在尝试以下形式的数据 import pandas import numpy as np impo
  • 如何使用 jQuery 删除 HTML 和特殊字符?

    所以我想要做的是删除所有 HTML 表格标签元素 只留下链接标签 table border 0 cellpadding 1 cellspacing 0 tbody tr valign top td class headlines td td
  • 如何在 C++ 中显示浮点值的多个前导零? [复制]

    这个问题在这里已经有答案了 在 C 程序中 我想显示一列浮点值 以便符号 数字和小数点全部对齐 必要时 多个前导零应填充每个值的整数部分 例如 A column of floating point values 000 0012 000 0