I’ve been experimenting in Hopscotch to find a way to truncate numbers, for example instead of 41,365 being displayed, 41.36K would be displayed. It is an important aspect of games, and I’ve been wondering if there is a way that this can be achieved using a shorter method. Currently I’m using a system where an ‘if else’ block is used to detect if a number is over 1000, then it converts into a smaller number and adds a K. This is the same for millions, billions, trillions, etc.

Just wondering if there is a method that doesn’t require as much blocks that I use.

this helped alot ty :)))

Here’s a pretty simple implementation as a custom block. In the actual project I forgot to add support for numbers < 1000, but that’s an easy fix

The code to support smaller/negative numbers would basically be this:

The only changes to the project are adding a check if else to support numbers that don’t change and using the length of the absolute value of the number to support negative numbers.

```
custom_block format(number: 3720, decimal_digits: 2):
check_if_else(absolute_value(number) < 1000):
# Numbers less than 1000 and greater than -1000 don't change
Self.↩️formatted_number = number
else:
# The letters to put after each triplet of zeroes (k for thousand, m for million, etc.)
# Only supports 1-letter abbreviations at the moment
abbreviation_letters = "kmbt"
number_of_zero_triplets = min(length(absolute_value(abbreviation_letters)), floor(length(number) / 3))
letter_part = character_at_index(in: abbreviation_letters, at: number_of_zero_triplets - 1)
number_part = number / 10 ^ multiply(3, *: number_of_zero_triplets)
# Round the number part
number_part = round(number_part * 10 ^ decimal_digits) / 10 ^ decimal_digits
Self.↩️formatted_number = join(number_part, with: letter_part)
```

Let me know if there’s any part of this that doesn’t make sense.

This works very well! :)) I’ll try to edit the code to add more abbreviation letters and see if it works properly.

UPD: I simplified the code and got it to work with 2-letter abbreviations!

Yeah, that’s fixed in the text I provided but in the actual project it only correctly handles numbers ≥ 1000

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.