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.作者答疑

  如有疑问,敬请留言。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐