Floating point PyTorch给了我一个不同的标量值

Floating point PyTorch给了我一个不同的标量值,floating-point,pytorch,tensor,Floating Point,Pytorch,Tensor,当我使用PyTorch从float创建一个张量,然后将其投射回float时,它会产生不同的结果。这是为什么?我如何修复它以返回相同的值 num = 0.9 float(torch.tensor(num)) 输出: 0.8999999761581421 这是一个浮点“问题”,您将了解更多关于Python3如何处理这些问题的信息 本质上,甚至num实际上也没有存储0.9。无论如何,您案例中的打印问题来自这样一个事实,即num实际上是双精度,而torch。默认情况下,tensor使用单精度。如果您

当我使用PyTorch从float创建一个张量,然后将其投射回float时,它会产生不同的结果。这是为什么?我如何修复它以返回相同的值

num = 0.9
float(torch.tensor(num))
输出:

0.8999999761581421
这是一个浮点“问题”,您将了解更多关于Python3如何处理这些问题的信息

本质上,甚至
num
实际上也没有存储0.9。无论如何,您案例中的打印问题来自这样一个事实,即
num
实际上是双精度,而
torch。默认情况下,tensor
使用单精度。如果您尝试:

num=0.9
float(torch.tensor(num,dtype=torch.float64))
您将看到
0.9

这是一个浮点“问题”,您将阅读更多关于Python 3如何处理这些问题的信息

本质上,甚至
num
实际上也没有存储0.9。无论如何,您案例中的打印问题来自这样一个事实,即
num
实际上是双精度,而
torch。默认情况下,tensor
使用单精度。如果您尝试:

num=0.9
float(torch.tensor(num,dtype=torch.float64))
您将获得
0.9