计算机和数据库中的最大小数位数

时间:2019-05-13 17:23:24

标签: java c++ sql operating-system

1)对于给定的机器,可以在磁盘上存储的浮点十进制数是否有最大小数位数?

2)给定的关系数据库管理系统是否可以使用小数位数最多?

3)假设C ++代码使用存储在磁盘上的确切数字,即完整的小数位。如果C ++代码输出的结果数字(例如,数字乘以2),并且小数位数超过了db所允许的位数,那么db如何处理它?引发异常还是向上舍入到基础硬盘允许的最大位数?

2 个答案:

答案 0 :(得分:1)

  

1)对于给定的机器,可以在磁盘上存储的浮点十进制数是否有最大小数位数?

通常,浮点数的精度由处理器或浮点处理器确定。

有一些“大数”库可以扩展浮点数的精度。

因此,磁盘上可以存储的最大小数位数取决于:
1)磁盘大小。
2)浮点实现的大小(例如Big Number库)。

  

2)给定的关系数据库管理系统是否可以使用最大小数位数?

是的。每个RDBMS都有其自己的限制。数据库之间没有标准限制。您必须调查数据库并找出答案。

  

3)假设C ++代码使用存储在磁盘上的确切数字,即完整的小数位。如果C ++代码输出的结果数字(例如,数字乘以2),并且小数位数超过了db所允许的位数,那么db如何处理它?引发异常还是向上舍入到基础硬盘允许的最大位数?

溢出或容量限制取决于浮点实现(处理器和数据库实现)。有些实现可能会截断,有些可能会舍入;一切都取决于。对于数据库,所有数据库之间都没有用于处理精度溢出或容量限制的标准。您将必须调查计划使用的数据库或所有数据库。

还可以在Internet上搜索“ IEEE浮点标准”。

答案 1 :(得分:0)

  

1)对于给定的机器,可以在磁盘上存储的浮点十进制数是否有最大小数位数?

计算机本身不存储小数位。他们维护二进制数字。二进制数字的最大数量由过程和所选浮点值的类型确定。二进制数字的数量限制了十进制数字的最大数量,该值可以任意转换为两个。

  

2)给定的关系数据库管理系统是否可以使用小数位数最多?

这些是计算机上所有内容的限制。数据库可以本地存储值,也可以转换为自己的格式。如果是本地存储,则硬件支持的二进制位数是极限。如果以其自己的格式存储,则数据库可以选择任意数量的数字。这个数字可能很大。

  

3)假设C ++代码使用存储在磁盘上的确切数字,即完整的小数位。如果C ++代码输出的结果数字(例如,数字乘以2),并且小数位数超过了db所允许的位数,那么db如何处理它?引发异常还是向上舍入到基础硬盘允许的最大位数?

乘以2只会增加指数。如果指数溢出,则只会得到异常。