为什么波浪号出现在负数上(例如 ~~-1)return 184467440737... 在 MySql 查询中
Why tilde on negative number(eg ~~-1) return 184467440737... in MySql query
我刚刚找到了一种我认为在某些编程语言中使用双波浪号 ~~
删除小数点更简单快捷的方法。
我很好奇波浪号是什么意思,然后我从this answer:
找到了
The operator ~ is a binary negation operator (as opposed to boolean
negation), and being that, it inverses all the bits of its operand.
The result is a negative number in two's complement arithmetic.
该答案适用于 PHP 语言,我认为 MySQL 也是如此。我想我可以使用 ~
恢复否定(也删除小数)和 ~~
只删除小数
我试过 PHP 和 JS:
单波浪号:
~-1 // = 1
~1 // = -1
~-1.55 // = 1
~1.55 // = -1
双波浪号:
~~-1 // = -1
~~1 // = 1
~~1.55 // = 1
~~-1.55 // = -1
但为什么我在 MySQL 中尝试显示不同的结果:
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
从上面的查询中,我可以得出结论,如果 ~~
可用于删除正数的小数(四舍五入),但不适用于负数(将 return 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标准。但是你的眼睛可能会呆滞。
我刚刚找到了一种我认为在某些编程语言中使用双波浪号 ~~
删除小数点更简单快捷的方法。
我很好奇波浪号是什么意思,然后我从this answer:
找到了The operator ~ is a binary negation operator (as opposed to boolean negation), and being that, it inverses all the bits of its operand. The result is a negative number in two's complement arithmetic.
该答案适用于 PHP 语言,我认为 MySQL 也是如此。我想我可以使用 ~
恢复否定(也删除小数)和 ~~
只删除小数
我试过 PHP 和 JS:
单波浪号:
~-1 // = 1
~1 // = -1
~-1.55 // = 1
~1.55 // = -1
双波浪号:
~~-1 // = -1
~~1 // = 1
~~1.55 // = 1
~~-1.55 // = -1
但为什么我在 MySQL 中尝试显示不同的结果:
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
从上面的查询中,我可以得出结论,如果 ~~
可用于删除正数的小数(四舍五入),但不适用于负数(将 return 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标准。但是你的眼睛可能会呆滞。