help-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Can Bash do simple math?


From: Greg Wooledge
Subject: Re: Can Bash do simple math?
Date: Tue, 6 Aug 2024 11:52:28 -0400

On Tue, Aug 06, 2024 at 17:08:23 +0200, alex xmb sw ratchev wrote:
> i really dont see why 60

Because there are 60 seconds in each minute, and 60 minutes in each hour.

Let's say you measure how long a program takes to run, and it ends up
being 179 seconds.  You'd like to convert this number (179) to an
interval expressed as "x minutes and y seconds".

There are a few ways you can do this.  They all give you the same answer.

The way that I find simplest to understand is always to divide by the
next conversion factor.  So:

 1) We divide 179 by 60, to get the number of minutes.
    We're using integer division, so any fractions are discarded.
    179 / 60 = 2
    So the final answer includes "2 minutes" as the first component.

 2) Now that we know how many whole minutes there are, we remove those
    from the original number.
    2 * 60 = 120
    We decrease the original number by 120.
    179 - 120 = 59

 3) The amount that's left over (59) is the number of seconds.
    So our final answer is "2 minutes and 59 seconds".

The conversion that the OP used is very similar to this, except they
went for hours, minutes and seconds.

Let's say you run a different program and it takes 7701 seconds, and
you'd like to convert this to "x hours, y minutes and z seconds".  We
can apply a similar recipe:

 1) Divide 7701 by 3600 to get the number of whole hours.
    7701 / 3600 = 2
    "2 hours"

 2) Subtract the whole hours from the original number.
    7701 - (2 * 3600) = 501

 3) Divide by 60 to get the number of minutes.
    501 / 60 = 8
    "8 minutes"

 4) Subtract the whole minutes from the original number
    501 - (8 * 60) = 21

 5) The remaining number is the number of seconds.
    "21 seconds"

So in this case, our final answer is "2 hours, 8 minutes and 21 seconds".

The OP chose to use slightly different recipes, which involve modulus
and which don't decrease the total as we go.  That's fine.  As I said,
there are different ways to do it, which all give the same answer.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]