我将使用python作为我正在寻找的示例(如果您不了解Python,可以将其视为伪代码):
>>> a = 1
>>> type(a)
<type 'int'>
Run Code Online (Sandbox Code Playgroud)
我知道在红宝石中我能做到:
1.9.3p194 :002 > 1.class
=> Fixnum
Run Code Online (Sandbox Code Playgroud)
但这是确定对象类型的正确方法吗?
为什么有些数字在存储为浮点数时会失去准确性?
例如,十进制数9.2可以精确地表示为两个十进制整数(92/10)的比率,两者都可以用二进制(0b1011100/0b1010)精确表示.但是,存储为浮点数的相同比率永远不会完全等于9.2:
32-bit "single precision" float: 9.19999980926513671875
64-bit "double precision" float: 9.199999999999999289457264239899814128875732421875
Run Code Online (Sandbox Code Playgroud)
这样一个看似简单的数字如何在64位内存中表达"太大" ?
说我有以下代码:
x = 0.8
y = 1.0
Run Code Online (Sandbox Code Playgroud)
什么是最好的检查方式y相当于Integer?目前我正在做:
y.to_int == y
Run Code Online (Sandbox Code Playgroud)
哪个有效,但我觉得应该有一个更好的方法.