众所周知,在.NET中,long和double的大小都是8个字节.但是,double可以存储比long长得多的数字.怎么可能,考虑到double还需要在小数点后的数字上存储数据?
更短版本的问题:
Math.Pow(2,64)== long.MaxValue Math.Pow(2,64)<double.MaxValue
use*_*019 20
简短回答double仅存储最重要的数字,而不是数字中可能包含的所有数字.例如,如果你有一个double> max值long,它将不会存储小数点后的数字或deciaml点左边的任何数字的任何信息.
有关所有细节,请参阅每位计算机科学家应了解的有关浮点运算的内容