AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Solved Nonsense Divide (https://forums.alliedmods.net/showthread.php?t=333135)

ConorCC 06-21-2021 06:49

Nonsense Divide
 
Hello there!

Can some explain why

static item_count; item_count = 0;
client_print(id, print_chat, "Item Count: %i | Page: %i", item_count, (item_count - 1) / 7);

prints "Item Count: 0 | Page: -1"

instead of

prints "Item Count: 0 | Page: 0"

So why -1 divided by 7 is -1 instead of 0? Shouldn't be it zero?

Please don't think me stupid. :D

CrazY. 06-21-2021 09:42

Re: Nonsense Divide
 
The result of -1 divided by 7 is -0.14285714285. In your example, the value is probably being rounded.
If what you are trying to do is calculate the total number of pages, this is the correct formula:
Code:
floatround(float(total item count) / float(limit per page), floatround_ceil)

fysiks 06-21-2021 22:25

Re: Nonsense Divide
 
Quote:

Originally Posted by ConorCC (Post 2750608)
Hello there!

Can some explain why

static item_count; item_count = 0;
client_print(id, print_chat, "Item Count: %i | Page: %i", item_count, (item_count - 1) / 7);

prints "Item Count: 0 | Page: -1"

instead of

prints "Item Count: 0 | Page: 0"

So why -1 divided by 7 is -1 instead of 0? Shouldn't be it zero?

Please don't think me stupid. :D

Instinctively, I would expect it to be zero. I created a quick C++ application on Linux and it's properly showing -1/7 = 0.

More importantly, I don't think item count should ever be zero. If it's zero, then there is no concept of pages so it doesn't make sense to print that value.

klippy 06-22-2021 05:53

Re: Nonsense Divide
 
From "Pawn The Language":
Quote:

e1 / e2
Results in the division of e1 by e2. The result is truncated to the nearest integral value that is less than or equal to the quotient. Both negative and positive values are rounded down, i.e. towards −∞.
It just depends on how language designers decided. There are other mainstream languages that round towards -∞ too. There's no right or wrong choice here, it's just important to be consistent.

fysiks 06-23-2021 01:16

Re: Nonsense Divide
 
Quote:

Originally Posted by klippy (Post 2750698)
From "Pawn The Language":

It just depends on how language designers decided. There are other mainstream languages that round towards -∞ too. There's no right or wrong choice here, it's just important to be consistent.

I guess I would have figured that integer division was so straight forward a concept that it couldn't be interpreted in so many ways. But clearly, that's not the case, go figure.


All times are GMT -4. The time now is 19:43.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.