我有两个浮点变量,time和prev_time,我需要减去它们,并检查是否小于0.我在几十个论坛中查找过,但似乎无法找到有效的答案。我需要做类似的事情:
if [[ `expr $time-$prev_time | bc` -lt 0 ]]
感谢任何帮助
答案 0 :(得分:1)
从您使用[[ ... ]]
开始,我假设您使用的是bash
。如果您只关心差异小于0,那么您只关心$time
小于$prev_time
。您可以将浮点值拆分为整数部分,然后单独进行比较:
IFS=. read time_int time_frac <<< $time
IFS=. read prev_in prev_frac <<< $prev_time
if (( time_int < prev_int || (time_int == prev_int && time_frac < prev_frac) )); then
或者,您可以这样使用bc
(另外,它符合POSIX标准):
if [ "$( echo "$time - $prev_time < 0" | bc )" = 1 ];
如果比较为真,则 bc
输出1,如果为假,则输出0。