C++程序将一个数字四舍五入到n位小数

c++程序将一个数字四舍五入到n位小数

在任何语言中编写程序时,将数字表示为输出是一项有趣且重要的任务。对于整数类型(short、long或medium类型的数据),很容易将数字表示为输出。对于浮点数(float或double类型),有时我们需要将其四舍五入到特定的小数位数。例如,如果我们想将52.24568表示为三位小数,需要进行一些预处理。在本文中,我们将介绍几种技术,通过四舍五入将浮点数表示为特定的小数位数。

在不同的方法中,使用类似C的格式化字符串、使用精度参数以及使用数学库中的round()函数是很重要的。让我们逐个来看。带有正确语法和代码示例。

使用格式化字符串

在C语言中,我们使用printf()函数来表示带有格式的打印。要使用printf()函数显示一些数据,需要事先指定格式化字符串。相同的printf()函数也适用于C++。要以特定的小数位数表示数字,格式化语法将如下所示

语法

printf 语句的语法。

立即学习“C++免费学习笔记(深入)”;

printf ( “%.f”,  );

例如,如果我们想要显示一个浮点数变量NUM,保留4位小数,语句将会是这样的 –

printf ( “%.4f”, NUM );

Example

的中文翻译为:

示例

#include using namespace std;void solve( float number) {   printf ( "%.3f", number );}int main(){   cout << "Number 45.278586 up to 3 decimal places: ";   solve( 45.278586 );}

输出

Number 45.278586 up to 3 decimal places: 45.279

在这个例子中,我们可以看到给定的数字有6位小数。但是我们只显示到3位小数。并且在四舍五入时会自动转换为最接近的值。然而,这个过程有一个缺点。我们不能在任意时刻动态地改变小数位的值。为了克服这个问题,我们可以使用基于C++的setprecision()方法采用另一种方法。

使用setprecision方法

C++有一个特殊的格式化函数,名为setprecision(),用于设置精度值,最多保留n位小数。要使用这个方法,我们需要导入iomanip库。还需要指定我们使用固定的小数位数。语法如下所示:

语法

定义set precision()方法

include std::cout << std::fixed;std::cout << std::setprecision(  );std::cout << The_floating_point_number;

例如,如果我们想要显示一个浮点数变量NUM,保留4位小数,语句将会是这样的 –

include std::cout << std::fixed;std::cout << std::setprecision( 4 );std::cout << NUM;

Example

的中文翻译为:

示例

#include #include using namespace std;void solve( float number, int place) {   cout << fixed;   cout << setprecision( place );   cout << number << endl;}int main(){   cout << "Number 45.278586 up to 3 decimal places: ";   solve( 45.278586, 3);   cout << "Number 45.278586 up to 4 decimal places: ";   solve( 45.278586, 4);   cout << "Number 45.278586 up to 5 decimal places: ";   solve( 45.278586, 5);}

输出

Number 45.278586 up to 3 decimal places: 45.279Number 45.278586 up to 4 decimal places: 45.2786Number 45.278586 up to 5 decimal places: 45.27859

这是一种理想的表示小数点后n位数的方法。有时候当n = 0时,我们可以使用另一种方法来四舍五入。这将把数字转换为整数。具体方法如下所示 −

使用round()方法

“cmath”库有一个 round() 方法将数字转换为其最接近的整数。所以这是将浮点数转换为小数点后 0 位。语法如下。

语法

使用 round() 方法

include float res = round (  );

例如,如果我们想将数字45.254四舍五入到最近的整数,语句将如下所示。

include float res = round ( 45.254 );std::cout << res;

Example

的中文翻译为:

示例

#include #include using namespace std;void solve( float number) {   float res;   res = round ( number );   cout << res << endl;}int main(){   cout << "Number 45.278586 to its nearest integer: ";   solve( 45.278586 );   cout << "Number 89.7854 to its nearest integer: ";   solve( 89.7854 );   cout << "Number -45.69 to its nearest integer: ";   solve( -45.69 );}

输出

Number 45.278586 to its nearest integer: 45Number 89.7854 to its nearest integer: 90Number -45.69 to its nearest integer: -46

在这个例子中,很明显将浮点数转换为最接近的整数,合适且简单的方法是使用round()函数。该函数以数字作为参数,并返回整数等价物。在我们的例子中,有一个负数-45.69,在将其四舍五入后,变成了-46,这个数比原来小。所以round()方法不像floor()或ceil()。

结论

当我们用 C++ 编写代码时,表示最多 n 位小数的浮点数的方法很少。最基本的方法是使用 printf() 方法和格式化字符串。但是,对于此方法,无法动态更改格式字符串小数位。为了处理这个问题,C++ iomanip 库有 set precision() 方法,该方法获取浮点数四舍五入的小数位数。有时我们需要将浮点数舍入为最接近的整数(小数点后 0 位),在这种情况下,我们可以使用 C++ 中 cmath 库中的 round() 方法。

以上就是C++程序将一个数字四舍五入到n位小数的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1445062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 22:08:45
下一篇 2025年12月17日 22:09:05

相关推荐

  • 利用CSS实现纯英文数字自动换行

    下面为大家带来一篇css代码使纯英文数字自动换行的简单实现。内容挺不错的,现在就分享给大家,也给大家做个参考。 当一个定义了宽度的块状元素中填充的全部为纯英文或者纯数字的时候,在IE和FF中都会撑大容器,不会自动换行 并且当数字或者英文中带有汉字时,会从汉字处换行,而纯汉字却可以自动换行。这个问题如…

    好文分享 2025年12月24日
    000
  • html5怎么设置input只能输入数字

    在html5中,可以通过input标签的type属性来实现只能输入数字的功能,只需要将type属性的值设置为“number”即可,语法“”。 本教程操作环境:windows7系统、HTML5版、Dell G3电脑。 标签规定用户可输入数据的输入字段。 根据不同的 type 属性,输入字段有多种形态。…

    2025年12月21日
    000
  • HTML怎么实现数字焦点图轮播代码

    html怎么实现数字焦点图轮播代码?数字焦点图轮播怎么做?数字焦点图轮播需要注意什么?给大家一份实现数字焦点图轮播代码,需要的朋友可以借鉴一下。 数字焦点图轮播代码 @@##@@ @@##@@ @@##@@ 1 2 3 数字焦点图轮播代码就是这么多了,更多精彩请关注创想鸟其它相关文章! 相关阅读: …

    好文分享 2025年12月21日
    000
  • C/C++中的数字连线游戏?

    游戏 – 假设有一个 n × n 的方格数组。其中,一些方格是空的,一些是实心的,还有一些非实心的方格由整数 1、2、3、… 设置。每个整数在棋盘上保持或占据恰好两个不同的方格。玩家的任务是借助仅实现水平和垂直移动的简单路径来连接棋盘上每个整数的两次出现。不允许两条不同的路径…

    2025年12月17日
    000
  • 一个数字连线游戏?

    数字连接是一种逻辑谜题,涉及在网格中找到连接数字的路径。 Numberlink谜题的一个简单例子 Numberlink谜题的解答 规则 – 玩家必须用单一连续线(或路径)将网格上的所有匹配数字配对。线条不能分叉或交叉,并且数字必须位于每条线的末端(即不在中间)。只有当问题具有唯一解并且网…

    2025年12月17日
    000
  • C++程序用于计算使数字n变为1所需的最小操作次数

    假设我们有一个数字n。我们任意执行这些操作之一 – 当 n 可被 2 整除时,将 n 替换为 n/2 当 n 可被 3 整除时,将 n 替换为 2n/3 当 n 可被 5 整除时,将 n 替换为 4n/5 立即学习“C++免费学习笔记(深入)”; li> 我们必须计算出数字 1 所…

    2025年12月17日
    100
  • 使用堆栈在C++中反转一个数字

    We are given an integer number Num as input. The goal is to find the reverse of the number using stack. Stack:- A stack is a data structure in C++ whi…

    2025年12月17日
    000
  • 找出在范围内不可被任何数整除的数字,使用C++

    在本文中,我们将讨论查找 1 到 n(给定)之间的数字的问题,这些数字不能被 2 到 10 之间的任何数字整除。让我们通过一些例子来理解这一点 – Input : num = 14Output : 3Explanation: There are three numbers, 1, 11,…

    2025年12月17日
    000
  • 给定一个字符串,其中字母的表示方式被打乱的数字

    在今天的文章中,我们将深入探讨与C++中字符串操作相关的一个独特问题。这个问题是“在给定字符串中,字母表达式被打乱的数字。” 这个问题可以作为一个很好的练习,来提高你在C++中的字符串操作和数据结构技能。 问题陈述 给定一个字符串,任务是识别其中字母表达方式被打乱的数字。例如,如果输入字符串是&#8…

    2025年12月17日
    000
  • 递归程序在C++中检查一个数字是否是回文数

    我们得到一个整数作为输入。目标是使用递归来确定输入数字 Num 是否为回文。 要检查一个数字是否为回文,请反转该数字并检查两个数字是否相同。如果反转后的数等于原数,则为回文。 示例 输入− Num = 34212; 输出− 34212 不是回文! 解释− 如果我们反转 34212,则得到 21243…

    2025年12月17日
    000
  • C程序用于判断给定的数字是否为强数

    一个强数是一个数字,其中各位数字的阶乘之和等于该数字本身。 示例 123!= 1!+2!+3!                    =1+2+6 =9 在这个例子中,123不是一个强数,因为各位数字的阶乘之和不等于该数字本身。 145!=1!+4!+5!             =1+24+120…

    2025年12月17日
    000
  • 找到通过插入给定数字形成的最小数字

    在给定的数字中插入一个数字意味着在给定的数字中添加一个新的数字,可以是在数字的前面、后面或者中间。我们已经给出了一个数字和一个数字,并且必须以尽可能小的方式将该数字添加到数字中。为了方便插入操作,我们将把数字转换为字符串。此外,给定的数字也可以是负数,因此我们必须考虑这种情况。 示例示例 Input…

    2025年12月17日
    000
  • 打印给定数字的乘法表在C中

    程序描述 打印给定数字的乘法表 算法 接受用户提供的任何需要形成乘法的数字 从 I 的值开始乘以给定数 (=1) 将给定数与 I 的值递增,直到 I 值小于或等于12. 示例 /* Program to print the multiplication table of a given number…

    2025年12月17日
    000
  • 给定一个数字,编写一个C程序来找到斐波那契数列

    斐波那契数列是通过将前两个数字相加得到的一系列数字。 斐波那契数列从两个数字f0和f1开始。 fo和f1的初始值可以取0、1或1、1。 Fibonacci序列满足以下条件: fn = fn-1 + fn-2 算法 参考Fibonacci序列的算法。 STARTStep 1: Read integer…

    2025年12月17日
    000
  • 可憎的数字

    如果一个数字在其二进制展开中有奇数个1,则被认为是奇异数。前10个奇异数是1,2,4,7,10,11,13,14,16,19,21。有趣的是,所有2的幂都是奇异数,因为它们只有1个位被设置。 下面的文章详细讨论了两种判断一个数字是否为可恶数字的方法。 问题陈述 这个问题的目的是检查给定的数字是否是一…

    2025年12月17日
    000
  • 用C++将一个数字表示为最大可能数量的质数之和

    讨论一个问题,例如,给定一个数字 N,我们需要将该数字拆分为最大素数和 Input: N = 7Output: 2 2 3Explanation: 7 can be represented as the sum of two 2’s and a 3 which are the maxim…

    2025年12月17日
    000
  • 使用C++编写代码,找到第N个非平方数

    我们都知道不是任何数字的平方的数字,如 2、3、5、7、8 等。非平方数有 N 个,不可能知道每个数字。因此,在本文中,我们将解释有关无平方数或非平方数的所有内容,以及在 C++ 中查找第 N 个非平方数的方法。 第 N 个非平方数 如果一个数是整数的平方,则该数被称为完全平方数。完全平方数的一些例…

    2025年12月17日
    000
  • C++程序:找到具有相同左右旋转的数字的最长子序列

    在这个问题中,我们需要找到左右旋转相同的子序列的最大长度。左旋转是指将字符串中的所有字符向左移动,并将末尾的第一个字符移动。右旋转意味着将所有字符串字符向右移动,并将最后一个字符移动到开头。 问题陈述 – 我们给定了包含数字的字符串str,需要找到左右旋转相同的最大长度的子序列。 示例 输入-str…

    2025年12月17日
    000
  • 将一个以链表表示的数字加1

    数字的链表表示是这样提供的:链表的所有节点都被视为数字的一位数字。节点存储数字,使得链表的第一个元素保存数字的最高有效位,链表的最后一个元素保存数字的最低有效位。例如,数字 202345 在链表中表示为 (2->0->2->3->4->5)。 要向这个表示数字的链表添加…

    2025年12月17日
    000
  • 检查一个数字是否为回文的Bash程序?

    要检查一个数字是否是回文数,我们需要将该数字反转,然后如果原始数字和反转后的数字相同,则为回文数。在Bash中,执行反转操作非常简单。我们需要使用‘rev’命令来实现。让我们看一下程序以更清楚地理解。 示例 #!/bin/bash# GNU bash Scriptn=12321rev=$(echo …

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信