в PHP
echo (int) ( (0.1+0.7) * 10 );
или в рубине
p ((0.1+0.7) *10).to_i
результат 7 вместо 8. может быть действительно трудно поймать такие ловушки. Я думаю, что если в Северной Америке это меньше проблем, потому что мы рассчитываем цены до скольких центов, так что $ 17,28 или $ 17,29 могут быть меньшей проблемой. Но в такой стране, как Китай или Гонконг, цена может быть целым числом. В этом случае, если наша программа щедрая и просто спросит клиента о целочисленной части цены, тогда могут возникнуть проблемы, если 8 станет 7. Так, может быть, мы всегда должны быть осторожны и вместо этого использовать round ()? Любой другой способ избежать этой ловушки?