【重复造轮子的原因】
尽管atof是标准C中自带的函数,用于将字符串转为浮点数,但是在某些环境下有可能没法使用的(例如CUDA环境中,没有atof函数,但是math.h可以使用),因此自行实现。
【通过的测试用例】
【实现的代码】
#include <stdio.h>
#include <math.h>
#include <assert.h>
//自己实现字符串转浮点数,可用于某些自带atof()使用不了的环境(例如CUDA的核函数中)
double my_atof(const char *str);
//两个double是否相同(模糊比较)
bool isFuzzyEqual(double a, double b)
{
double min = fmin(fabs(a), fabs(b));
double dif = fabs(a - b);
return (dif * 1.0E12 <= min);
}
int main()
{
assert(isFuzzyEqual(my_atof("123.456"), 123.456));
assert(isFuzzyEqual(my_atof("0123.456"), 123.456));
assert(isFuzzyEqual(my_atof("+123.456"), 123.456));
assert(isFuzzyEqual(my_atof("123.456 abc"), 123.456));
asser