如何检查给定的napi_value类型napi_number是一个整数或十进制(一个带有小数值的数字),使用node.js本机N函数。看起来在N中没有isInt()或isDouble()等效函数(我们也不想使用V8函数调用)。让我们考虑这样一个场景:通过传递一个参数作为参数,从f1()调用JavaScript中的本地addon函数,如代码段所示。
let obj = { n1: 123, n2: 123.45 };
myaddon.f1( obj );本机函数f1()希望通过调用最佳拟合值提取native函数来提取与键、n1、和n2相关联的值。例如,要提取n1的值,最好使用其中的一个,同样,对于n2,double是一个更好的选择。
napi_get_value_double
napi_get_value_int32
napi_get_value_uint32
napi_get_value_int64不幸的是,我找不到任何N函数来验证导数的napi_number属性.你有没有遇到过类似的情况,如果是的话,你是如何解决这个问题的?
发布于 2019-10-29 21:58:45
节点-addon-api团队已经打开了有关此特性的请求,他们提供了一个听起来合乎逻辑的答案。我想和这个社区分享这个答案,这样可以帮助其他人进行类似的查询。以下是节点-addon-api团队的答案。
在用数字处理JavaScript时,重要的是要知道JavaScript中的所有数字都是双精度64位IEEE 754值(尽管一些引擎(比如v8 )在小整数上可能有额外的表示,但在ECMA规范中没有这样的定义,也无法在JavaScript中确定这些类型的数字)。 napi_get_value_{double,int32,uint32,int64}只是将这些值转换为它想要的值。在转换过程中可能会出现精度损失。如果在这种情况下需要确定的数字,则使用BigInt代替。
https://stackoverflow.com/questions/58586425
复制相似问题