0

我有两个浮点变量,time 和 prev_time,我需要将它们相减,并检查是否小于 0。我在几十个论坛中查找过,但似乎找不到有效的答案。我需要做类似的事情:

if [[ `expr $time-$prev_time | bc` -lt 0 ]]

任何帮助表示赞赏

4

1 回答 1

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。

于 2013-11-07T16:32:08.577 回答