所以,我试图从一个mongoshell打印一个NumberLong到控制台。 但是,当我将NumberLong变量转换为字符串时,该值向下舍入。在初始搜索之后,它看起来好像是因为javascript的精度限制浮动。 这是mongoshell中的一个例子:
var abc = NumberLong(2517720935641120769);
print(abc);
输出
NumberLong("2517720935641120769")
但是,当我尝试将其转换为字符串以仅打印值
时print(''+abc);
输出
2517720935641121000
在NumberLong中打印值有什么技巧吗?
答案 0 :(得分:1)
确保在创建NumberLong
字段时引用该数字。如果你没有引用你的值,那么它将被转换为浮点数,你将失去精度。
NumberLong(123123123123131123).toString()
>>NumberLong("123123123123131120")
但是,如果您引用您的值,它将被正确存储并返回:
NumberLong("123123123123131123").toString()
>>NumberLong("123123123123131123")
两个语句都直接在MongoShell中执行,>>
之后的值给出了MongoShell(版本3.0.7)返回的输出
答案 1 :(得分:0)
使用未记录的exactValueString
属性:
> NumberLong("2517720935641120769").exactValueString
2517720935641120769