Search Postgresql Archives

Re: "two time periods with only an endpoint in common do not overlap" ???

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

 



On 16/10/21 18:41, David G. Johnston wrote:
On Friday, October 15, 2021, Ron <ronljohnsonjr@xxxxxxxxx> wrote:


    Prima facie, if you were told "numbers in the range 0-10", would
    you really think, "ah, they *really* mean 0 through 9"?


I would indeed default to both endpoints of the range being inclusive.  I also begin counting at one, not zero.  I’ve long gotten past being surprised when computer science and my defaults don’t agree.  Choices are made and documented and that works for me.

As for this, documentation I never really gave the wording a second thought before, though I can definitely understand the complaint and like the somewhat wordier, but less linguistically challenging, phrasing the OP suggested (Boundary point, especially by itself, is not an improvement).

David J.

The reason arrays generally start at zero and not one, is efficiency.

When indexes are zero based then the displacement in bytes from the start address of x[n] is simply:
    startAddress + n * sizeOfElement

If the start of an array had the index of one, then you have subtract one each time, so the displacement from the start address of x[n] now becomes
    startAddress + (n - 1) * sizeOfElement


Half open intervals make life a lot simpler so it is the natural default, to prevent intervals from having any numbers in common.

If you have 3 intervals spanning the range [0, 30), and you are only dealing with integers then you can split the range as:
[0, 9]           0 <= x <= 9
[10, 19]      10 <= x <= 19
[20, 29]      10 <= x <= 29

But what if you are dealing with floats? The above arrangement would not work, as 9.78 would not be in any interval, so you need half open intervals, such as:
[0, 10)          0 <= x < 10
[10, 20)      10 <= x < 20
[20, 30)      10 <= x < 30
So you know what number each interval starts at, and every number in the range is covered.


-Gavin








[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux