四舍六入c语言公式,【测绘专用】四舍六入五成双的C++实现

该博客介绍了如何使用C++实现测绘行业特有的四舍六入,五前单进双舍的取舍规则。通过示例代码展示了如何处理小数点后保留位数的问题,并提供了将功能封装成函数的方法。还讨论了在double类型输出时可能遇到的精度问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作为一名测绘专业的学生,在内业计算中经常遇到遇到小数点后保留几位小数的问题。根据《工程测量实验教程》(王宇会 著)一书,内业计算按“四舍六入,五前单进双舍(或称奇进偶不进)”的取舍规则进行尾数的取舍。如数据1.1235和1.1245小数点后保留三位时,均应为1.124

//四舍六入五成双的基于C++11的实现

//C++11中sprintf、strncpy由于VS2015会报错,所以在这里改用sprintf_s、strncpy_s

#include #include #include using namespace std;

const int n = 1000; //设置要保留的位数

char s1[20];

char s2[20];

int main()

{

double a1, a2, a3;

cin >> a1;

a2 = a1*n; //将输入的数据乘以n,使得小数点后的第一位使我们要判断的是否为5的数

sprintf_s(s1, "%lf", a2); //将double类型的a2打印到字符数组s1里面去

int b = strcspn(s1, "."); //整型b即为小数点在字符数组中序号

char c = s1[b + 1]; //字符c即为小数点后一位数

if (c'5') //如果c大于5,则进1

{

strncpy_s(s2, s1, b);

a3 = atof(s2) + 1;

}

else

{

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值