
以前看到有人这么写 echo "$a > $b" | bc 我试了根本不行 syntax error on line 1, teletype 错误 请问如何比较两个浮点数大小
现在有两个数,4107067392 2391776870 在shell中怎么比较大小? 在CU搜索有些朋友指出能用bc或者awk来做浮点数的,但是如果这两个数分别放在变量a ,b 中要比较大小,具体怎么做呢?
我想判断一个浮点数是否大于小于零 应该怎么写? $a=0.39 if [ $a -gt 0 ] 这样写不行 这让我想到shell中怎么转变数值类型? 必须要用printf吗?先printf再比较觉得比较麻烦。 很基础的问题,请赐教!
浮点数与0比较的时候不能直接使用==比较,需要进行特别的处理,如下: int cy_FloatCompare(double fA, double fB) { const double fM=0.000001; double fC=fA-fB; if (fC>;fM) return 1; if (fC<-fM) return -1; return 0; } 但这样总避免不了一个精度的问题,如何才能取得正确的比较结果又不损害数据精度呢?
由于编译器的优化,可能会出现两个逻辑上相等的变量比较结果不同的情况,例如: a = f(10);// f内部进行浮点运算,返回浮点结果至a,中间发生了精度截断(因为CPU浮点寄存器为80位,而a为64位 b = f(10); e = a == b;// 这里,编译器优化后的代码直接用CPU寄存器中的结果(b')与变量a作比较,由于b'没有被截断,所以e == 0 一般来说,比较两个浮点数时只能用一个范围来衡量它们的差值,若不超过这个范围,则认为相等。那么,这...