编程中浮点数运算会损失精度已经成为了默认的惯例,精度损失的原因也信手拈来,目前科普文章大多讨论浮点数四则运算的精度问题,而鲜有探究其他浮点数运算的精度。
今天在做LeetCode 50的时候发现 LeetCode服务端检验的问题,同时带出了乘法运算和log、exp运算在硬件上的精度问题。
该题采用模拟的方式计算Pow,计算x的n次幂。测试过程中对于一些手动输入的样例不能通过,但是本题仍可以AC(考虑过double的问题)。
编程中浮点数运算会损失精度已经成为了默认的惯例,精度损失的原因也信手拈来,目前科普文章大多讨论浮点数四则运算的精度问题,而鲜有探究其他浮点数运算的精度。
今天在做LeetCode 50的时候发现 LeetCode服务端检验的问题,同时带出了乘法运算和log、exp运算在硬件上的精度问题。
该题采用模拟的方式计算Pow,计算x的n次幂。测试过程中对于一些手动输入的样例不能通过,但是本题仍可以AC(考虑过double的问题)。
1 |
find . -path ./ignore -prune -o -type f -exec dos2unix {} \; |
其中 . 是当前目录, ./ignore 是忽略的目录
这种问题一般是由于编译顺序不对造成编译器找不到实现文件,但是我用的是CLion自动生成的CMakeList.txt来管理编译,怎么会顺序不对。
我以为是上次没有测试就commit了,然而用git回滚也没有用,后来发现目录下有一个叫CMakeCache.txt的文件,里面存了一堆看不懂的东西,删除之后就好了。
但是CMakeCache.txt为什么会在Project的根目录下呢?不应该待在cmake-build-debug文件夹里吗?
后来才想起来有一次试图在命令行里挑战用裸CMake编译结果失败了的事情(默认还是VS的编译器),可能就是那时候生成了那个版本的CMakeCache.txt,后来也再也没有打开过这个Project,今天要添加新功能的时候发现了问题的不对。
话说git回滚的时候HEAD detach了(HEAD 游离),解决以上问题以后不知道HEAD怎么在指回最新的提交,一气之下重新clone了个新的。
我好蠢啊