我想在matlab中使用xor作为我的双数,但是bitxor只适用于int数。在Matlab中是否有可以将double转换为int的函数?
答案 0 :(得分:1)
您要查找的功能可能是:int8(number)
,int16(number)
,uint32(number)
其中任何一项都会将Double转换为整数,但您必须选择最适合您的结果想要实现。请记住,如果不对数字进行舍入,则无法从Double转换为Integer。
如果我理解你,你可以通过将起始值乘以2 ^ n然后使用前面提到的任何函数将其转换为Integer来创建一个简单地从Double数中删除“逗号”的函数。无论你想要什么,然后通过将数字除以2 ^ n
将逗号返回到其原始位置将起始值乘以2 ^ n是一种可以减少舍入误差的黑客攻击。 如果此数字相对较小, n 的完美值将是逗号后面的位数。
请同时注明,您为什么要这样做?这似乎不是最佳解决方案。
答案 1 :(得分:0)
你可以转换为整数:
a = 1.003
int8(a)
ans =
1
这会给你一个8位有符号整数,你也可以得到其他大小,即int16
或其他无符号即uint8
,具体取决于你想做什么