The bug
Using scientific notation in a command does not work like it used to in 1.12.
This should teleport you to z=1000 (and does so in 1.12):
/tp ~ ~ 1.0E3
In 1.13 this will not make it through the parser
Analysis and ideas
Minecraft as a prefilter in place for command parameters such as numbers. For example using the String "01-.439-2" will pass that prefilter for any number, because it only contains characters that are allowed in numbers.
/particle minecraft:crit ~ ~ ~ 1 1 1 01-.439-2
The command feedback message will be "Invalid float '01-.439-2'".
If you use other characters, such as letters, e.g. "ThisIsNotANumber" the prefilter will already realize that the argument is not valid and the feedback will be "Expected float".
/particle minecraft:crit ~ ~ ~ 1 1 1 ThisIsNotANumber
So the prefilter checks if the given number only contains valid characters and if so it passes it on to the parseFloat method in this case. If this method throws an Exception, the "invalid float" feedback is given to the player.
Additionally there is the "Expected whitespace to end one argument, but found trailing data" feedback. This is given to the player whenever the argument starts with a valid number (as defined by the prefilter), but has any invalid characters after that.
/particle minecraft:crit ~ ~ ~ 1 1 1 123ThisIsNotANumber
The prefilter however does not allow the character 'E' nor 'e'. Due to this, '1.0E5' will not make it through the prefilter to the parseFloat- method and the "Expected whitespace" feedback message is given to the player. If the prefilter for numbers did allow the character 'e'/'E', the scientific notation should work, since Java's parseFloat() and parseDouble() methods already support that.
Besides that, it is somewhat weird, that command feedback messages will prefer the scientific notation for higher values, while the command does not accept it.
- links to