【问题标题】:express-cassandra is converting Long value into negativeexpress-cassandra 正在将 Long 值转换为负值
【发布时间】:2017-05-30 15:09:32
【问题描述】:

我正在使用express-cassandra npm 包连接到数据库,下面的代码在将Long 值转换为Integer 时给出负值。

var num = 13315766168394088000;

结果是:-

var valueFromInt = models.datatypes.Long.fromInt(num);

=> 长:-1152696320

var valueFromString = models.datatypes.Long.fromString(num.toString());

=> 长:-5130977905315463616

我不明白为什么这是巨大的差异以及为什么返回负值。

【问题讨论】:

    标签: node.js cassandra express-cassandra


    【解决方案1】:

    13315766168394088000 大于 Number.MAX_SAFE_INTEGER (2^53),因此不应使用 Number(64 位 IEEE-754 双精度)来表示它,也不应使用 Long.fromInt()

    您可以使用值的位或十进制字符串表示形式:

    const longValue = Long.fromString('13315766168394088000');
    

    【讨论】:

    • 谢谢,我在研究时发现了同样的事情。
    猜你喜欢
    • 2015-09-14
    • 1970-01-01
    • 2019-01-17
    • 2020-12-20
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    相关资源
    最近更新 更多