c++只保留float型的小数点后两位问题

目录
  • c++ 只保留float型的小数点后两位
  • C++ cout输出小数点后指定位数
    • 参考代码

c++ 只保留float型的小数点后两位

float spd = 22.518744;
char buf[10];
sprintf(buf, "%.2f", spd);
sscanf(buf, "%f", &spd);

记录一下,有时候我们需要float类型只保留两个有效小数,但是在实际应用中会发现一些现象

如:1.5 在实际中为1.49999998 等等

还有一个常用的方法同时进行四舍五入:

float ff = 36.51647;
ff = ( (float)( (int)( (ff + 0.005) * 100 ) ) ) / 100;

但是有时候效果也不理想

C++ cout输出小数点后指定位数

在C++的编程中,总会遇到浮点数的处理,有的时候,我们只需要保留2位小数作为输出的结果,这时候,问题来了,怎样才能让cout输出指定的小数点后保留位数呢?

在C语言的编程中,我们可以这样实现它:

printf("%.2f", sample);

在C++中,是没有格式符的,我们可以通过使用setprecision()函数来实现这个需求。

想要使用setprecision()函数,必须包含头文件#include 。

使用方式如下:

cout << "a=" << setprecision(2) << a <<endl;

这时候,我们会发现,如果a的值为0.20001,输出的结果为a=0.2,后面第二位的0被省略了。

如果我们想要让它自动补0,需要在cout之前进行补0的定义。

代码如下:

cout.setf(ios::fixed);
cout << "a=" <<fixed<< setprecision(2) << a <<endl; //输出a=0.20

这样,我们就可以得到0.20了。当然,如果想要关闭掉补0,只需要对fixed进行取消设置操作。

cout.unsetf(ios::fixed);
cout << "a=" << setprecision(2) << a <<endl; //输出a=0.2

我们的输出结果就又变回a=0.2了。

参考代码

#include <iostream>
#include <iomanip>
 
using namespace std;
 
int main()
{
    float a = 0.20001;
    cout.setf(ios::fixed);
    cout << "a=" <<fixed<< setprecision(2) << a <<endl; //输出结果为a=0.20
    cout.unsetf(ios::fixed);
    cout << "a=" << setprecision(2) << a <<endl; //输出结果为a=0.2
    return 0;
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • C++ float、double判断是否等于0问题

    目录 float.double判断是否等于0 float和double的比较 float.double判断是否等于0 如果是两个int类型的数据,想要判断他们是否相等,我们可以直接比较. int a =11; int b=11; if(a==b) 答案是肯定的,BUT如果是float和double: float是32位,double是64位.float32位中,有1位符号位,8位指数位,23位尾数位.double64位中,1位符号位,11位指数位,52位尾数位. 一般float型只能精确到小数到

  • 基于C++浮点数(float、double)类型数据比较与转换的详解

    浮点数在内存中的存储机制和整型数不同,其有舍入误差,在计算机中用近似表示任意某个实数.具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法.所以浮点数在运算过程中通常伴随着因为无法精确表示而进行的近似或舍入.但是这种设计的好处是可以在固定的长度上存储更大范围的数.1.将字符串转换为float.double过程存在精度损失,只是float.double各自损失的精度不相同而已std::string str="8.2&

  • C++数据精度问题(对浮点数保存指定位小数)

    1.背景 对浮点数保存指定位小数.比如, 1.123456. 要保存1位小数,,调用方法后, 保存的结果为: 1.1. 再比如,1.98765, 保存2位小数的结果为: 2.00. 2. 解决方案 A.添加头文件 #include <sstream> #include <iomanip> B.添加命名空间 using namespace std; C.添加函数 /* 函数名:round /* 函数功能:数据精度计算函数 /* 函数参数:float src:待求精度数 int bit

  • c++只保留float型的小数点后两位问题

    目录 c++ 只保留float型的小数点后两位 C++ cout输出小数点后指定位数 参考代码 c++ 只保留float型的小数点后两位 float spd = 22.518744; char buf[10]; sprintf(buf, "%.2f", spd); sscanf(buf, "%f", &spd); 记录一下,有时候我们需要float类型只保留两个有效小数,但是在实际应用中会发现一些现象 如:1.5 在实际中为1.49999998 等等 还有一

  • JavaScript 获取任一float型小数点后两位的小数

    用Javascript取float型小数点后两位,例22.127456取成22.13,如何做? 1.这种方法最不推荐: function get(){ var s = 22.127456 + ""; var str = s.substring(0,s.indexOf(".") + 3); alert(str); } 2. 使用正则表达式获取: function get(){ var a = "23.456322"; var aNew; var r

  • Android金额输入框只允许输入小数点后两位效果

    一:要实现这个效果也不是很复杂,只需要设置输入框输入的字符类型.设置InputFilter.设置输入变化监听即可.下面直接来看代码吧-. 二:new 一个class extends AppCompatEditText并写上一个初始化函数 private void init() { //设置输入框允许输入的类型(正则) //对应的布局属性是--->android:digits="0123456789." setKeyListener(DigitsKeyListener.getIns

  • 调整小数的格式保留小数点后两位

    在开发过程中经常遇到要调整小数的格式,如保留小数点后两位等等.方法也颇为常见,备忘如下. 第一种,利用math.round var original=28.453 1) //round "original" to two decimals var result=Math.round(original*100)/100; //returns 28.45 2) // round "original" to 1 decimal var result=Math.round(

  • C++详解使用floor&ceil&round实现保留小数点后两位

    目录 C++四舍五入保留小数点后两位 1.floor函数 2.ceil函数 3.round函数 C++四舍五入保留小数点后两位 示例 #include <iostream> using namespace std; int main() { double i = 2.235687; double j = round(i * 100) / 100; cout << "The original number is " << i << endl

  • js取小数点后两位四种方法

    Javascript取float型小数点后两位,例22.123456取成22.12,如何做? 1.通过substring截取. function getnum() { var num = 22.123456; var result = num.substring(0,s.indexOf(".")+3); alert(result); } 2. 正则表达式. function getnum() { var num = 22.123456; var aNew; var re = /([0-

  • Android 限制显示小数点后两位的实现方法

    限制Android显示小数点后两位小数格式可以使用两种方法(个人在项目中使用的,并不代表就这两种,还有很多),好了废话不多说,上内容. 1.第一张方法:使用DecimalFormat API DecimalFormat format = new DecimalFormat("#.##"); String numberStr = format.format(numberDecimal); Log.e("TAG","numberStr => "

  • 正负小数点后两位浮点数实现原理及代码

    背景:项目中需要做个对两位小数点的正负浮点数的处理, 要求:非数字或者.字符自动清除,并对.12自动修补.前的0 原理:在输入框中加入两个事件,keyup与blur,keyup处理字符串中非要求的字符,blur中对最终字符串处理成理想的格式111.11 实现:通过七个正则处理掉主功能 val代表输入的字符串 /^\d*\.?\d{0,2}$/ 验证val是否是ddd.dd的格式,是则不处理,否才处理 /[^.0-9]+/ 处理掉val中所有的非数字与.的字符 /(?:\d*\.\d{0,2}|\

  • mysql格式化小数保留小数点后两位(小数点格式化)

    复制代码 代码如下: SELECT FORMAT(12562.6655,2); 结果:12,562.67 查看文档:Formats the number X to a format like '#,###,###.##', rounded to D decimal places, and returns the result as a string. If D is 0, the result has no decimal point or fractional part.整数部分超过三位的时候

  • JS取数字小数点后两位或n位的简单方法

    在js中有时要用到取float数字的小数点后两位的情况. var num=10/3; function f(num,n){ return parseInt(num*Math.pow(10,n)+0.5,10)/Math.pow(10,n); } alert(f(num,2)); 以上就是小编为大家带来的JS取数字小数点后两位或n位的简单方法全部内容了,希望大家多多支持我们~

随机推荐