It has come to light that the VALUE() function is broken.
The VALUE() function is supposed to extract numbers from a string. It’s designed to be used as a simple filtering tool to remove non-numbers from a field. This is how it is documented on the formula field reference page.
Instead, the VALUE() function does at least 2 completely different things:
The VALUE() function converts certain letters into numbers, and then multiplies those numbers by the closest numbers that it can find! This issue is documented here:
The VALUE() function interprets certain symbols as operators to perform math on all the extracted numbers from a string. This issue is documented here:
We do not know what the complete list of letters & symbols are that cause the VALUE() function to fail, so there is no telling how many different ways this function can fail.
In my opinion, everybody should avoid the VALUE() function. Or at the very least, proceed cautiously when using it.
My gut says that they’re using Numeral.js behind the scenes instead of writing their own string-to-number converter. Looking at the page, I think the “Unformat” section is the part to note. Unfortunately there isn’t a hyperlink just for that section, so you have to scroll to it.
To the contrary, this should not disappoint anyone; it is cause for celebration. In fact, the entire platform should embrace the inclusion of other libraries based on open web standards.
Imagine a world where user/community-defied functions and formulas are simply based on arbitrary javascript blocks. This would be a huge advancement in platform agility and not unlike that which Airtable is already doing inside the platform.