为什么转化为ALTER PROCEDURE myStoredProc
(@variable1 INT,
@variable2 INT,
@variable3 INT)
double
的{{1}}会在Kotlin中产生65555
的结果?
答案 0 :(得分:9)
这是因为从较宽类型到较小尺寸类型的数字转换。 Double
(IEEE 754 double precision number)有其不可分割的部分,因为第65555 = 2 17 + 2 4 + 2 2 + 2 0 = 65536 + 16 + 2 + 1,以二进制形式存储为(较高位到较低位):
... 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1
当此数字转换为Byte
时,仅保留其最低8位:
... _ _ _ _ _ _ _ _ _ _ 0 0 0 1 0 0 1 1
结果为2 4 + 2 2 + 2 0 = 16 + 2 + 1 = 19.
答案 1 :(得分:3)
因为当您将65555(或65555.0)转换为二进制表示时,它需要多个字节。所以调用.toByte()
取最低值,即19。
65555 -> Binary == 1 00000000 00010011
^ ^^^^^^^^ ^^^^^^^^
1 0 19
答案 2 :(得分:1)