我有以下查询:
SELECT EXP(col) FROM `project.dataset.tablename`;
col
为FLOAT
的位置。但是,我收到此错误:Error: Floating point error in function: EXP
。
我已尝试使用虚拟数据EXP()
,它可以正常工作。例如:
SELECT EXP(col) FROM (
SELECT 1. as col UNION ALL
SELECT 2. as col);
为什么我会收到实际数据的浮点错误,我该如何解决?我尝试了EXP(CAST(col as FLOAT64))
和EXP(ROUND(col, n))
之类的内容,但我仍然遇到同样的错误。
答案 0 :(得分:5)
您可能正在使用大于709.7827的数字。
奇怪的数字,但即使在Fortran文档中:
EXP(X)
指数。
X必须小于或等于709.7827。
http://sc.tamu.edu/IBM.Tutorial/docs/Compilers/xlf_8.1/html/lr277.HTM
这是因为在^ 709.7827之后数字变得太大了。
答案 1 :(得分:1)
运行查询:
SELECT MAX(col)
FROM project.dataset.tablename;
可能很明显为什么会出现溢出错误。您可以使用case
:
SELECT (CASE WHEN col < ?? THEN EXP(col) END)
FROM project.dataset.tablename;
我可以建议一个值,但从您的应用程序中可能很明显 - 比如大于10或100的东西可能只是不合理。