This is not a bug, but a design feature. Although not a shop, it was designed for compatibility in mind, since processing prices requires 6-digit precision and this is one way to do it (on purpose). If you remove decimals behind floating point, you lose information. By multiplying values with 1M you keep them untouched in integers with goal precision, plus gain compatibility with different separators, as there is no need to store them.
Thanks for illumination, but:
1) /100 and *100 is better because 6 float digit is not usable! 1.000001$ or 1.000001# !!!
2) also unsigned field in data base is better because price always is +.
3) in many countries commodity and payments have big digit.
for exam:
in Armenia an Apple Macintosh desktop computer is 1,200,000 MNT
and in Iran that is 120,000,000RLS
a House in Iran is 200,000,000,000RLS
one USA dollar in Iran is 35,000RLS
if these become better then we can search and submit big prices not 6digit price!!!!