According to the language specifications a number with a decimal but without an identifier is automatically a double. Automatic conversions exist for converting lower precision types to higher precision types because doing so won’t lose any data but they don’t exist for converting from higher to lower because you can potentially lose data.
It isn’t about saving memory. A C# float is 4 bytes and a double is 8 bytes. It’s about precision. Floats have 32-bit precision and doubles have 64-bit precision. However, all video GPUs support floats, whereas support for doubles is not common (and precision can vary) – so Unity uses floats everywhere.
Refusing to automatically cast a variable from a higher precision double to a lower precision float is not about saving memory but about eliminating a potential runtime error that may be difficult to track down.