使用浮动数据点计算大查询中的余数
Calculating remainder in big query with floating data points
Hive 查询语言有一个 PMOD 函数可以用来计算余数。此函数对整数和双精度工作得很好。比如计算4.7除以2的余数
SELECT PMOD(4.7,2);
这个查询的 hive 查询语言的答案是 0.7
Google 大查询有 MOD 函数来计算余数。但是这个函数只适用于整数。
SELECT MOD(4.7,2); 在 google 大查询中不起作用。
可以在大查询中将 4.7 转换为 INT64。然后 MOD 函数将起作用,但答案将是 1 而不是 0.7
在 google 大查询中使用浮动数据点计算余数的任何帮助都将非常有用。
计算浮点值的余数是一个有趣的概念,我个人到目前为止从未听说过。
根据您的描述,基本上都是关于求整数部分的余数并将结果的小数部分相加?
如果是这样,可能可以通过使用以下表达式(在您的示例中)来模仿它: MOD(FLOOR(4.7),2) + 4.7 - FLOOR(4.7)
考虑到整数部分是 FLOOR(4.7)
并且小数部分因此是 4.7 - FLOOR(4.7)
更新。这个假设非负浮点值,在负值的情况下,小数部分显然是 value - CEIL(value)
。使用 value - TRUNC(value)
会概括为这两种情况找到小数部分,但我不太确定 MOD()
对负值的结果,所以我会留给你
Hive 查询语言有一个 PMOD 函数可以用来计算余数。此函数对整数和双精度工作得很好。比如计算4.7除以2的余数
SELECT PMOD(4.7,2);
这个查询的 hive 查询语言的答案是 0.7
Google 大查询有 MOD 函数来计算余数。但是这个函数只适用于整数。
SELECT MOD(4.7,2); 在 google 大查询中不起作用。
可以在大查询中将 4.7 转换为 INT64。然后 MOD 函数将起作用,但答案将是 1 而不是 0.7
在 google 大查询中使用浮动数据点计算余数的任何帮助都将非常有用。
计算浮点值的余数是一个有趣的概念,我个人到目前为止从未听说过。
根据您的描述,基本上都是关于求整数部分的余数并将结果的小数部分相加?
如果是这样,可能可以通过使用以下表达式(在您的示例中)来模仿它: MOD(FLOOR(4.7),2) + 4.7 - FLOOR(4.7)
考虑到整数部分是 FLOOR(4.7)
并且小数部分因此是 4.7 - FLOOR(4.7)
更新。这个假设非负浮点值,在负值的情况下,小数部分显然是 value - CEIL(value)
。使用 value - TRUNC(value)
会概括为这两种情况找到小数部分,但我不太确定 MOD()
对负值的结果,所以我会留给你