[C/C++]_[初级]_[关于输出double浮点数精度的方法]

场景

  1. 在开发WTL/Win32程序时,绘制进度百分比,需要指定这个百分比包括小数点不超过5个字符,也就是除了小数点之外的数字个数最多只显示4个。已知可能出现的数值有1.1,1.1145,22.14… 用什么方式可以获取需要的字符串呢?

说明

  1. 绘制百分比的地方是限定宽度的,太长的话就会越界,因此出现这种需求。
1.1 -> 1.1
1.1145 -> 1.114
22.145 -> 22.14
...
  1. C++base_stream里就有这么一个方法std::ios_base::precision(n),指定它生成数字的个数,也就是小数点前后的数字个数。当然,生成数值是接近实际熟知的。当精度个数小于它的整数部分时,会用科学计数法来输出字符串。
stringstream ss;
ss.precision(4);
  1. C语言的printfsprintf系列里, 它的格式%.[n]f并不可以指定数字的总数,必须是指定小数点后精度的个数,如果小于这个精度,会在后边填充0.
auto d1 = 23.23;
printf("%.3f\n", d1);

例子

// test-double-precision.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include <iostream>
#include <sstream>using namespace std;auto d0 = 2.2;
auto d1 = 23.23;
auto d2 = 3.2335;
auto d3 = 43.2335;void TestCppPrecision() 
{cout << "TestCppPrecision" << endl;stringstream ss;ss.precision(4);ss << d0;cout << ss.str() << endl;// 如果精度小于它的整数个数,那么会使用科学计数法ss.precision(1); ss.str("");ss << d1;cout << ss.str() << endl;ss.precision(4);ss.str("");ss << d1;cout << ss.str() << endl;ss.precision(4);ss.str("");ss << d2;cout << ss.str() << endl;}void TestCPrecision()
{cout << "TestCPrecision" << endl;printf("%.3f\n", d1);//printf("%06.2f\n", d1);printf("%.3f\n", d2);//printf("\tPadding:\t%05.2f %.2f %5.2f\n", 1.5, 1.5, 1.5);printf("%02d\n", 1);printf("%.2f\n", d3);
}int main()
{std::cout << "Hello World!\n";TestCppPrecision();TestCPrecision();
}

输出

Hello World!
TestCppPrecision
2.2
2e+01
23.23
3.233
TestCPrecision
23.230
3.233
01
43.23

参考

  1. std::ios_base::precision

  2. printf,sprintf

  3. setprecision

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/726324.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VScode+Zotero+Latex文献引用联动

一、VScodeLatex联动 1、VScode的安装 2、texlive.iso安装 可以参考以下&#xff0c;也可以忽略所有直接一步一步默认安装 https://zhuanlan.zhihu.com/p/442308176 3、Vscode的插件安装&#xff1a;【latex workshop】 4、打开设置&#xff0c;搜索json&#xff0c;然后点击…

MIT 6.S081---Lab: Multithreading

Uthread: switching between threads (moderate) 修改uthread.c&#xff0c;在thread中新增context字段&#xff1a; 修改uthread.c&#xff0c;在thread_create函数中新增以下逻辑&#xff1a; 修改uthread.c中的thread_switch函数定义&#xff1a; 修改uthread.c中的th…

你不得不知道的Python AI库

Python是人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;领域中使用最广泛的编程语言之一&#xff0c;拥有丰富的库支持各种AI和ML任务。本文介绍一些经典的Python AI库。 1. NumPy 简介&#xff1a;NumPy&#xff08;Numerical Python&#xff09;…

Meta AI移动设备上部署LLM的新框架MobileLLM

Meta AI 研究团队推出的 MobileLLM 标志着大语言模型(LLMs)朝着模拟人类理解和生成自然语言迈出了革命性的一步。LLMs 在处理和分析大量数据集方面的能力已经显著影响了自动化客户服务、语言翻译和内容创作等多个领域。然而,由于传统 LLMs 在计算和存储资源方面的需求庞大,…

centos7中python3.10找不到openssl解决方案

如果有用其他方法安装了其他版本openssl&#xff0c;记得卸载其他的openssl&#xff0c;删除其他的openssl相关文件。 yum remove openssl* rm -rf ***下载最新版的openssl文件 按照官网安装方法安装openssl 官方安装地址https://docs.python.org/3/using/unix.html#on-linu…

代码随想录算法训练营第13天

239. 滑动窗口最大值 &#xff08;一刷至少需要理解思路&#xff09; 方法&#xff1a;暴力法 &#xff08;时间超出限制&#xff09; 注意&#xff1a; 代码&#xff1a; class Solution { public:vector<int> maxSlidingWindow(vector<int>& nums, int k…

目标检测YOLO实战应用案例100讲-基于数据融合的SAR图像中海上目标检测与跟踪

目录 前言 国内外研究现状 船舰目标监视资源 光学卫星 SAR卫星

数据分析方法(一)|认知数据

在进行数据分析时&#xff0c;很多人拿到数据之后没有头绪&#xff0c;在没有需求的情况下不知道从何做起&#xff0c;此时我们不妨先动起脑来理解数据。 分析数据之前&#xff0c;清晰的认识数据是非常重要的&#xff0c;通常我们可以从以下几个角度对数据进行深入了解&#x…

推荐5款极具效率的实用工具软件

​ 每次分享实用的软件,都会给人一种踏实和喜悦的感觉,这也是我热衷于搜集和推荐高效工具软件的原因。 1.个人日记软件——EDiary ​ EDiary是一款功能丰富的个人日记软件&#xff0c;用户可以在不联网的状态下使用&#xff0c;保护隐私。它支持日记、记事本、日历、事件提醒…

word如何实现不同章节显示不同页眉

一、问题描述 写论文时遇到如下情形&#xff0c;第二章页眉跟第一章一样&#xff0c;如下图 二、解决方法 在第二章前一页空白处&#xff0c;选择依次布局→分隔符→下一页&#xff0c;如下图 双击第二章页眉&#xff0c;进入页眉编辑状态&#xff0c;点击链接到前一节按钮&a…

在Linux上安装Ghostscript

在Linux上安装Ghostscript通常是通过包管理器来完成的。不同的Linux发行版可能有不同的包管理器&#xff0c;我会简要介绍一些常见的Linux发行版上如何安装Ghostscript。 ### Ubuntu 或 Debian 在Ubuntu或Debian上&#xff0c;你可以使用apt包管理器来安装Ghostscript。打开终…

chrome浏览器插件content.js和background.js还有popup都是什么,怎么通讯

popup 在用户点击扩展程序图标时&#xff08;下图中的下载图标&#xff09;&#xff0c;都可以设置弹出一个popup页面。而这个页面中自然是可以包含运行的js脚本的&#xff08;比如就叫popup.js&#xff09;。它会在每次点击插件图标——popup页面弹出时&#xff0c;重新载入。…

Spring之Bean详解

Spring之Bean详解 什么是Bean&#xff1f; 在Spring中&#xff0c;Bean是指由Spring容器管理的对象&#xff0c;这些对象是由Spring IoC容器负责创建、组装和管理的。Bean可以是Java类的实例&#xff0c;也可以是其他Spring管理的组件&#xff0c;例如数据源、事务管理器等。…

FPGA——三速自适应以太网设计(2)GMII与RGMII接口

FPGA——以太网设计&#xff08;2&#xff09;GMII与RGMII 基础知识&#xff08;1&#xff09;GMII&#xff08;2&#xff09;RGMII&#xff08;3&#xff09;IDDR GMII设计转RGMII接口跨时钟传输模块 基础知识 &#xff08;1&#xff09;GMII GMII:发送端时钟由MAC端提供 下…

NextJs教程系列(三):路由layout

可复用的布局 Next.js的layout是一个可复用的布局&#xff0c;不同的子页面可以共享布局容器&#xff0c;页面跳转时&#xff0c;layout容器不会重新渲染。 children props export default function RootLayout({ children }) {return (<html lang"en"><…

怎么做加密文件二维码?分享文件更安全

怎么做一个加密文件二维码&#xff1f;在日常的工作和生活中&#xff0c;通过扫描二维码来查看或者下载文件的方式&#xff0c;被越来越多的人所使用&#xff0c;一方面是二维码的成本低&#xff0c;另一方面有利于提升便捷性和用户体验。 为了保证内容的隐私性和安全性&#…

【XR806开发板试用】串口驱动JQ8900播放音乐

一、硬件连接 1.JQ8900引脚定义 通过阅读JQ8900的数据手册&#xff0c;可以了解到驱动JQ8900有许多种方式&#xff0c;IO驱动&#xff0c;一线串口驱动&#xff08;VPP&#xff09;&#xff0c;两线串口驱动&#xff08;RX&#xff0c;TX&#xff09;&#xff0c;这里我使用两…

VSCode设置

VSCode设置 VSCode设置1.双击和点击显示设置2.快捷键设置 VSCode设置 1.双击和点击显示设置 VSCode设置双击才能打开文件、文件夹 打开文件夹&#xff1a;在设置页中搜索 expandMode,将 singleClick 改为 doubleClick 即可。 双击打开文件&#xff1a;在设置页中搜索workben…

Unity性能优化篇(八) 导入的模型网格优化设置

模型导入Unity后&#xff0c;可以选中这个模型&#xff0c;在Inspector窗口设置它的属性。下面说的都是可自定义选择优化的地方 Model选择卡: 1.在Model选项卡&#xff0c;启用Mesh Compression可以压缩模型&#xff0c;压缩程度越高&#xff0c;模型精度越低&#xff0c;但是…

Python实现插入排序算法

Python实现插入排序算法 以下是使用Python实现插入排序算法的示例代码&#xff1a; def insertion_sort(arr):n len(arr)for i in range(1, n):key arr[i]j i - 1# 将比key大的元素向右移动一位while j > 0 and arr[j] > key:arr[j 1] arr[j]j - 1arr[j 1] key# …