Pytorch tensor multiplication with Float tensor giving wrong answer
I am seeing some strange behavior when i multiply two pytorch tensors.

x = torch.tensor([99397544.0])
y = torch.tensor([0.1])
x * y


This outputs 

tensor([9939755.])


However, the answer should be 9939754.4

In default, the tensor dtype is torch.float32 in pytorch. Change it to torch.float64 will give the right result. 

x = torch.tensor([99397544.0], dtype=torch.float64)
y = torch.tensor([0.1], dtype=torch.float64)
x * y
# tensor([9939754.4000])


The mismatched result for torch.float32 caused by rounding error if you do not have enough precision to calculate (represent) it. 

What Every Computer Scientist Should Know About Floating-Point Arithmetic
