是的,本世纪的noob问题......但是说实话,我实际上并不知道浮点值究竟是什么......更重要的是,浮点数和整数之间的差异。
提前致谢!
答案 0 :(得分:12)
见
基本上,浮点数据类型是一种以科学计数法存储数值的方法。您可能会编写2.3789 x 10 ^ 12,但由于计算机使用二进制文件,因此它是一种二进制科学符号。
浮点值,用软件表示绝对精度的交易量值(你只有很多位可以传播)。
整数是......好吧..整数。最右边(低位)表示2 ^ 0(例如,1),下一位表示2 ^ 1(2s),下一个2 ^ 2(4)等等。最左边(高位)位表示符号(0表示正数,1表示负数)。这带来了负值:它们用所谓的二进制补码表示。得到正数的两个补码:
所以8位正1(二进制,00000001)被转换为负面表示(11111111)
00000001
原始值。11111110
翻转位11111111
添加1 二进制补码表示法的优点是加法和减法使用相同的电路:通过加法实现减法:使用上面的+ 1 / -1示例,得到零:添加最右边的位给出二进制10(十进制2) )。将其带到下一列,重复添加。进位通过符号位传播出来,最终值为00000000。
曾经有过使用其他表示形式的系统,但大多数(如果不是全部)现代计算机都使用二进制补码表示法。
然后,当然,有位序(big-endian v。little-endian),但这是另一个故事。
答案 1 :(得分:3)
我想扩展Nicholas Carey在答案中提到的一些内容:
浮点值,用软件表示绝对精度的交易量值(你只有很多位可以传播)。
这就是我们称它们为“浮点数”的原因 - 我们允许小数点“浮动”,具体取决于我们想写的数字有多大。
让我们用十进制表示法给出一个例子。假设您有5个单元格来记下一个数字:_ _ _ _ _。如果不使用小数点,则可以表示0到99999之间的数字。但是,您可以表示的最小差异为1.
现在您决定需要记下美元金额,以便从左侧添加两位数的小数点:_ _ _。 _ _这称为fixed point arithmetic。现在你只能写0到999.99之间的数字,但现在你可以表示1美分或0.01的差异
如果您想将此计划用于小额日常开支和所得税,该怎么办?您可以允许小数点“浮动”并使用其中一个数字表示它的位置:[_] _ _ _ _
例如,您的银行利息可能是[3] 4 7 6 5代表4.765,您的杂货账单可能是[2] 5 9 8 2(59.82),您的租金1 8 7 5 9( 875.9)和您的所得税申报表[0] 2 3 8 9(2389)。您甚至可以允许小数点冒险在数字之外,如下所示:[ - 1] 4 5 9 8代表4598x10 = 45,980。
请注意,您现在可以代表非常小和非常大的数字,但您无法准确表示所有数字。例如,在写作[0] 2389时,我们放弃了分数。
更常见的是用科学记数法来思考浮点数,如4.598x10 ^ 4,其中'4.598'称为有效数,'4'是指数,'10'是基数。其他人提到的链接有更详细的实际存储格式。
答案 2 :(得分:2)
在这种情况下,维基百科是你最好的朋友:
虽然您应该从data types overview
开始此外,数据类型的实现因语言和处理器体系结构而异(例如,整数在不同体系结构上的位数不同),但如果使用C作为正典(C是系统编程的事实标准,并且被认为是“仅仅” - 就抽象方面的汇编语言而言,那么这些资源应该更具启发性:
答案 3 :(得分:0)
基本用语:
浮点值是一个允许有小数点的实数。
整数值没有小数点(如果你愿意,可以是整数)
答案 4 :(得分:0)
让我谷歌这个给你!
http://en.wikipedia.org/wiki/Primitive_data_type#Floating-point_numbers
对于专业人士和初学者来说非常有趣!享受。
答案 5 :(得分:0)
每个计算机科学家应该了解浮点运算 http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html
IEEE 754-1985 http://en.wikipedia.org/wiki/IEEE_754-1985答案 6 :(得分:0)
float是一种数据类型。