我有两个浮点变量,time 和 prev_time,我需要将它们相减,并检查是否小于 0。我在几十个论坛中查找过,但似乎找不到有效的答案。我需要做类似的事情:
if [[ `expr $time-$prev_time | bc` -lt 0 ]]
任何帮助表示赞赏
我有两个浮点变量,time 和 prev_time,我需要将它们相减,并检查是否小于 0。我在几十个论坛中查找过,但似乎找不到有效的答案。我需要做类似的事情:
if [[ `expr $time-$prev_time | bc` -lt 0 ]]
任何帮助表示赞赏
根据您对 的使用[[ ... ]]
,我假设您正在使用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。