My question is more about Why in C++,C# and VB
std::cout<<2.2f*3.0f<<std::endl; //prints 6.6
And in Python, Java and Ruby
2.2*3.0 //prints 6.6000000000000005
I'm very familiar with floating point representation in memory. I checked that in fact 2.2 cannot be represented precisely in memory with single precision.
But still why do C++,C# and VB cut-out the irrelevant part of the result when printing the value while the others do not?