win32-C++-检测文件是否占用-源代码范例-数学函数-四舍五入-保留小数位数转字符串-特殊不准问题
如果异步监控文件,就需要等待文件加载完毕,其实就是文件控制权的转移。检测代码如下所示:2.保留小数位数转字符串 在C++编程的数学库中,只有floor和cell两个函数,却没有round这个函数,这时可以自己实现,源代码如下所示:1.四舍五入2.数字转字符串保留位数 方法1: 方法2:3.特殊位数情况 计算机都是二进制的,在一些特殊的小数时,是不能准确表达,可能差一点点,一般计算不会存在多
·
1.检测文件是否占用
如果异步监控文件,就需要等待文件加载完毕,其实就是文件控制权的转移。检测代码如下所示:
#include <io.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/locking.h>
#include <share.h>
#include <fcntl.h>
bool IsFileUsed(const char* filePath)
{
bool ret = false;
int fh = _sopen(filePath, _O_RDWR, _SH_DENYRW,
_S_IREAD | _S_IWRITE );
if(-1 == fh)
ret = true;
else
_close(fh);
return ret;
}
2.保留小数位数转字符串
在C++编程的数学库中,只有floor和cell两个函数,却没有round这个函数,这时可以自己实现,源代码如下所示:
1.四舍五入
int round_double1(double number)
{
return (number > 0.0) ? (number + 0.5) : (number - 0.5);
}
int round_double2(double number)
{
return (number > 0.0) ? floor(number + 0.5) : ceil(number - 0.5);
}
2.数字转字符串保留位数
方法1:
#include <iostream>
#include <iomanip> //需要包含此头文件
using namespace std;
int main()
{
double x=3.1415926;
int N=3;
std::cout <<std::fixed<<std::setprecision(N) << x <<std::endl;//N位
}
方法2:
#include <stdio.h>
int main()
{
dobule a = 1.23456;
printf("%.2f\n", a);//2位
return 0;
}
3.特殊位数情况
计算机都是二进制的,在一些特殊的小数时,是不能准确表达,可能差一点点,一般计算不会存在多大的误差,但是面对四舍五入的标注时,却不准确,如果只有3位有效位,可以加一个5位的小数,这样基本能弥补差的那一点点,当然更准确的是采用两位有理数表达,但是那样更麻烦。
3.作者答疑
如有疑问,敬请留言。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献7条内容
所有评论(0)