Repository: pytorch
Issue: Trace model with floor, Inconsistent performance
Labels: oncall: jit,days

## 🐛 Bug

Traced model perform Inconsistent when floor

## To Reproduce

Steps to reproduce the behavior:

1. I have a separate file, you can run it in torch env:
```
import os
import numpy as np
np.random.seed(0)

import torch
import torch.nn as nn

torch.manual_seed(100)
torch.backends.cudnn.benchmark = False

import time

class Network(nn.Module):
    def __init__(self):
        super(Network, self).__init__()

    def cart2polar(self, input_xyz):
        rho = torch.sqrt(input_xyz[:,0]**2 + input_xyz[:,1]**2)
        phi = torch.atan2(input_xyz[:,1], input_xyz[:,0])
        out = torch.cat((rho.reshape(-1,1) ,phi.reshape(-1,1), input_xyz[:,2:]), dim=1)
        return out

    def forward(self, data):
        pc = data[0]
        pc = cart2polar(pc)
        idx = ((pc[:, 0] - 0) / (50 - 0) * (288+0.0))
        idx_ = idx.floor()
        print('idx', idx.tolist())
        return idx_

if __name__ == "__main__":
    model = Network()
    model = model.cuda()
    model.eval()

    # get data
    scan = torch.tensor([[[46.80095291137695, -16.5851993560791, 1.2298789024353027, 6.0], 
                          [37.45176696777344, -41.502838134765625, -0.37045028805732727, 20.0]]]).cuda()
    
    print('scan', scan.shape)

    with torch.onnx.set_training(model, False):
        traced_script_module = torch.jit.trace(model, example_inputs=(scan))

    print("Tracing model && data done!")


    test_times = 10
    print('testing', test_times, 'times -------------------------')
    with torch.no_grad():
        for i in range(test_times):
            print('test', i)
            print('scan', scan.tolist())

            score = model(scan)
            traced_score = traced_script_module(scan)

            out = torch.allclose(score, traced_score, rtol=1e-05, atol=1e-05, equal_nan=False)
            print('is equal', out)

    print("Test Trace Done!")

```

I remove the `floor` in the network and results become right.
It seems that the boundary value (20.9999999999999 as an example), will be 20 by floor but 21 in traced model.

## Expected behavior

The data should have the same results.

## Environment

```
PyTorch version: 1.2.0
Is debug build: No
CUDA used to build PyTorch: 10.0.130

OS: Ubuntu 18.04.4 LTS
GCC version: (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
CMake version: version 3.17.3

Python version: 3.6
Is CUDA available: Yes
CUDA runtime version: 10.0.130
GPU models and configuration: 
GPU 0: GeForce RTX 2080 Ti
GPU 1: GeForce RTX 2080 Ti

Nvidia driver version: 440.100
cuDNN version: Could not collect

Versions of relevant libraries:
[pip] numpy==1.18.1
[pip] torch==1.2.0
[pip] torch-scatter==1.3.1
[pip] torchvision==0.4.0a0+6b959ee
[conda] _pytorch_select           0.2                       gpu_0    defaults
[conda] blas                      1.0                         mkl    defaults
[conda] cudatoolkit               10.0.130                      0    defaults
[conda] mkl                       2020.1                      217    defaults
[conda] mkl-service               2.3.0            py36he904b0f_0    defaults
[conda] mkl_fft                   1.0.15           py36ha843d7b_0    defaults
[conda] mkl_random                1.1.0            py36hd6b4f25_0    defaults
[conda] numpy                     1.18.1           py36h4f9e942_0    defaults
[conda] numpy-base                1.18.1           py36hde5b4d6_1    defaults
[conda] pytorch                   1.2.0           py3.6_cuda10.0.130_cudnn7.6.2_0    pytorch
[conda] torch-scatter             1.3.1                     <pip>
[conda] torchvision               0.4.0                py36_cu100    pytorch
```

cc @suo @gmagogsfm