这两个术语有什么区别?它们的不同仅仅是因为浮点数的位数(有效位数和指数位数)是固定的吗?
维基百科上写着
浮点表示可以看作是一种科学记数法
和
十进制浮点数是一种与科学记数法密切相关的计算机算术系统。
科学记数法和浮点数的区别是什么?
除了一些细节外,没有太大区别。都使用:符号*有效*基数指数
浮点(FP),在计算机语言中使用或在IEEE 754等标准中指定,意味着有限的精度和指数范围。科学记数法(SN)没有这样的限制。
FP限制精度影响各种数学运算和转换的结果。最终结果与目标浮点格式相一致,导致与使用开放式科学记数法表示的内容不同。
有限指数 浮点的范围也会导致运算结果,如无穷大和次法线或零,其中科学记数法没有要求。
浮点通常不包含意义。FP 1.0具有与1.00000相同的显著性(两者编码相同),而SN是2比6位显著性。一些现代FP格式(十进制格式)对相同的值采用不同的编码,但具有不同的意义。
FP有有限不同的值,例如264编码,而SN是无限的。
科学记数法是一种表示太大或太小的数字(通常会导致一长串数字)而不能方便地写成十进制的方法。
https://en.wikipedia.org/wiki/Scientific_notation
一般科学记数法格式为m × 10n其中m为任意十进制数,n为整数,例如31.4 × 10-25或-2.45 × 1031
更一般的格式可以表示为符号× m ×基数n. 在计算机中,浮点类型也以显式存储符号m和n的格式表示。n
为指数,m
为线性标度的显著或对数标度的尾数。基数通常是2,因为现代计算机是二进制机器,但也存在其他基数。例如,过去有使用基数为8和16的浮点格式。十进制浮点类型(即base = 10)在许多情况下也很常见,在这些情况下,由于二进制浮点类型导致的精度损失是不可接受的
现代IEEE 754标准(它是计算机中浮点运算的事实上的标准)包括二进制和十进制浮点类型。例如,它的单精度(又名binary32)格式使用1位符号,8位指数和23位有效
这两个术语的主要区别是基数。严格来说,科学记数法使用以10为基数:m× 10n,并且m和n也以10为基数表示。
但是计算机浮点数通常在内部使用以2为基数,而不是以10为基数:mx2n,至少m通常以2或16为基数呈现。因此,浮点数并不是真正的"科学记数法"。但肯定是密切相关的。你可以叫它广义科学记数法或者指数记数法如果你喜欢的话。(即使它不是严格正确的,如果你称之为"科学记数法",每个人都会明白你的意思。)
除了基数之外,还有其他一些不太重要的差异:计算机浮点数具有有限的范围和精度,它可能对无穷大和nan("不是数字")的某些值进行特殊处理,并且它的内部表示可能包含隐含的1位和次法线。