如何解决为什么负数上的波浪号例如~~-1在 MySql 查询中返回 184467440737...
我刚刚找到了一种我认为在某些编程语言中使用双波浪号 ~~
更简单、更快速地删除小数的方法。
我很好奇波浪号是什么意思,然后我从this answer中了解到:
运算符 ~ 是一个二元否定运算符(与布尔运算符相反) 否定),因此,它反转其操作数的所有位。 结果是二进制补码运算中的负数。
该答案适用于 PHP 语言,我认为 MysqL 也是如此。我想我可以使用 ~
恢复否定(也删除小数)和 ~~
只删除小数
我尝试过 PHP 和 JS:
单个波浪号:
~-1 // = 1
~1 // = -1
~-1.55 // = 1
~1.55 // = -1
双波浪线:
~~-1 // = -1
~~1 // = 1
~~1.55 // = 1
~~-1.55 // = -1
select ~1; // 18446744073709551614
select ~-1; // 0
select ~-111; // 110
select ~1.55; // 18446744073709551613
select ~-1.55; // 1
select ~~1; // 1
select ~~-1; // 18446744073709551615
select ~~1.55; // 2
select ~~-1.55; // 18446744073709551614
从上面的查询中,我可以得出结论,如果 ~~
可用于删除正数的小数(四舍五入),但不适用于负数(将返回 18446744073...) .我不知道在 MysqL 中使用 ~
。谁能帮我解释一下?
解决方法
“...更快地删除小数...”——不要在这个级别上进行优化。坚持SQL的整体结构。
要将浮点值转换为整数,请使用函数:
mysql> SELECT FLOOR(12.7),CEIL(12.7),ROUND(12.7),ROUND(12.777,2),FORMAT(1234.7,0)\G
*************************** 1. row ***************************
FLOOR(12.7): 12
CEIL(12.7): 13
ROUND(12.7): 13
ROUND(12.777,2): 12.78
FORMAT(1234.7,0): 1,235
至于 ~
对浮点数的作用,我们需要进入 IEEE-754 标准。但你的眼睛可能会呆滞。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。