'Simple calculation produces decimal number [duplicate]

I don't understand why 500 * (1 - 80/100) results in 99.99999999999997 instead of 100. Where does that come from?

const storage = {
  rawDataVolumeAtGoLive: 500,
  compressionRate: 80,
}

function getCompressedVolumeAtGoLive(storage) {
  if (storage.rawDataVolumeAtGoLive && storage.compressionRate !== null) {
    console.log('storage.rawDataVolumeAtGoLive', storage.rawDataVolumeAtGoLive);
    console.log('storage.compressionRate', storage.compressionRate);
    return storage.rawDataVolumeAtGoLive * (1 - storage.compressionRate / 100);
  }
  return 0;
}

console.log(getCompressedVolumeAtGoLive(storage));


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source