在ML 9.0-8版本中,表达式xdmp:eval("(3298534883328) div 1024 div 1024 div 1024 ")
返回0。
但是,在ML 9.0-7中,相同的表达式返回3072。
类似地,在ML 9.0-8版本中,表达式xdmp:eval("(3298534883328) div 1024 ")
返回322122382,但在ML 9.0-7版本中,相同表达式返回3221225472
为什么不同版本的3072有区别?
答案 0 :(得分:1)
看来$query = DB::select(" SELECT * (SELECT friendid as friends from tfriends WHERE nameid = $id) FROM tname");
var_dump($query);
除法返回的结果不正确。这是一个非常大的数字,所以我想这是某种溢出的结果。
以下每个表达式在MarkLogic的更高版本中产生xs:decimal
值xs:decimal
,而不是在早期版本中返回的322122382.272474584
。
3221225472
作为一种解决方法,您可以通过使用fn:number(),将{左手或右手数字显式评估为3298534883328 div 1024 ,
xs:integer(3298534883328) div 1024,
xs:decimal(3298534883328) div 1024,
xs:long(3298534883328) div 1024
或xs:double
来强迫期望值,{ {3}},xs:float
或xs:double()
。
以下各项均返回预期的答案xs:float()
:
3072