c语言 f保留两位精度,C++数据精度问题的解决方案(对浮点数保存指定位小数)

1、背景

对浮点数保存指定位小数。比如,  1.123456.   要保存1位小数,,调用方法后, 保存的结果为: 1.1。 再比如,1.98765,  保存2位小数的结果为: 2.00.

2、 解决方案

A、添加头文件

#include

#include

B、添加命名空间

using namespace std;

C、添加函数

/************************************************************************/

/* 函数名:round

/* 函数功能:数据精度计算函数

/* 函数参数:float src:待求精度数 int bits:精度(0表示保留小数点后0位小数,1表示保留1位小数,2:表示保留2位小数)

/* 函数返回值:精度求取结果

/* Author: Lee

/************************************************************************/

float round(float src, int bits);

函数实现

float CDemo1Dlg::round(float src, int bits)

{

stringstream ss;

ss << fixed << setprecision(bits) << f;

ss >> f;

return f;

}

D、调用方式

CString str2 = L"99.054";

float f2 = (float)_wtof(str2);

f2 *= 10;

f2 = this->round(f2, 2);

E 、注意

比如, 1.05,   double在计算机中表示为 1.0499999997, float表示为1.0500000003, 但其实际都是与1.05相等的。

round方方式对处理的位数为5的情况有例外,比如: 1.05, 处理的结果 可能为1.0499999997。 这里写的是float, 你可以换做其他的类型。自己多测几次就明白了

总结

以上所述是小编给大家介绍的C++数据精度问题的解决方案(对浮点数保存指定位小数),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: c语言中的双精度浮点数类型为double,可以用%lf格式说明符读取和输出。当读入一个双精度浮点数后,可以使用%.12lf格式说明符来保留12小数并输出这个浮点数。 下面是一个示例代码: ```c #include <stdio.h> int main() { double num; printf("请输入一个双精度浮点数:"); scanf("%lf", &num); printf("输出这个浮点数为:%.12lf\n", num); return 0; } ``` 程序运行时,会提示输入一个双精度浮点数。例如输入3.14159265358979323846,程序会输出这个浮点数为3.141592653590。 需要注意的是,浮点数在计算机中存储是有限的,可能会有精度损失。在使用浮点数进行计算时,尤其是涉及到比较和判断相等性等操作时,要特别小心。 ### 回答2: c语言中可以使用"%lf"格式控制符来读取一个双精度浮点数。在输出时,保留12小数可以使用"%.12lf"格式控制符。 具体代码如下: ```c #include <stdio.h> int main() { double num; printf("请输入一个双精度浮点数:"); scanf("%lf", &num); printf("输入的浮点数为:%.12lf", num); return 0; } ``` 这段代码中,首先定义了一个双精度浮点数变量num,然后使用printf函数输出提示信息。在scanf函数中使用"%lf"格式控制符读取用户输入的双精度浮点数并存储在num变量中。最后,使用printf函数输出num的值,保留12小数,使用"%.12lf"格式控制符。 ### 回答3: 可以使用C语言中的`scanf`函数来读入一个双精度浮点数,并使用`printf`函数来保留12小数输出这个浮点数。 ```c #include <stdio.h> int main() { double num; scanf("%lf", &num); printf("%.12lf\n", num); return 0; } ``` 首先声明一个双精度浮点数变量`num`,然后使用`scanf`函数读入这个浮点数,`%lf`是`scanf`函数的格式控制符,用于指定读取双精度浮点数。 接着,在`printf`函数中,使用`%.12lf`的格式控制符来保留12小数输出这个浮点数。其中`%lf`用于指定输出双精度浮点数。 最后,使用`return 0;`来结束程序。 这样,在输入一个双精度浮点数后,程序会输出这个浮点数保留12小数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值