That's probably a low hanging fruit.
Assume an orgmode spreadsheet with one side for input - a number - and the other side for output. The other side is specified with simple elisp code, taking the input string from the one side, interprets it as a number, and copies it on the output side.
|----------------+------------------------|
| Input | Output |
|----------------+------------------------|
| certain number | copy of certain number |
|----------------+------------------------|
#+TBLFM: @2$2='(string-to-number @2$1)
If input is 428.94, everything is fine.
|--------+--------|
| Input | Output |
|--------+--------|
| 428.94 | 428.94 |
|--------+--------|
#+TBLFM: @2$2='(string-to-number @2$1)
But if input has a zero as the last digit - like, for example 597.50 - the number gets shortened by that last zero digit. The result: Input had 5 digits, Output just 4, not identical anymore.
|--------+--------|
| Input | Output |
|--------+--------|
| 597.50 | 597.5 |
|--------+--------|
#+TBLFM: @2$2='(string-to-number @2$1)
Certainly there is a simple way to extend string-to-number by a format building block, which makes sure, that the interpretation of the input string always has just as much digits after the decimal separator - in the example 2 digits - no matter if the string contains something like ".07" or something like ".20".
|--------+--------|
| Input | Output |
|--------+--------|
| 597.50 | 597.50 |
|--------+--------|
#+TBLFM: @2$2='???(string-to-number @2$1)???
What does the trick?