javascript - 如何从文件中读取数据而不舍入精度超过 16 位的数字?
问题描述
使用fs模块的readFileSync方法从 Node.js 中的文件读取数据时,默认情况下会自动舍入超过 16 位精度的数字。
var data = fs.readFileSync(file)
data包含自动四舍五入的数字,例如:
0.91544900000000007 is rounded to 0.9154490000000001
4647.3424257097241 to 4647.342425709725
如何在不四舍五入的情况下从文件中读取数据?
解决方案
当您读取文件时,您会收到一个字符串。字符串不能四舍五入。
// temp.txt:
9154490000000000723581950185310538193807258123518235015387
// node:
fs.readFileSync('temp.txt').toString(); // not rounded
至于将字符串解析为浮点数时的舍入,有BigInt
整数
// node:
let str = fs.readFileSync('temp.txt').toString();
let int = BigInt(str);
我不知道在 vanilla 节点中用于浮动的类似解决方案。您可以查看 npm 包,例如BigFloat
。
推荐阅读
- reactjs - 添加 JWT 授权标头后,CORS 无法工作
- javascript - 如何使用节点模块“csurf”的sameSite选项
- filemaker - FileMaker:将表格值与其他表格中的相应图片匹配
- java - 如何保证在开始IntegrationFlow的下一步之前完成这项工作?
- wpf - 将格式化文本绑定到模板化 TextBlock
- postman - 如何在 Postman 中下载附件文件
- c# - 检查 char 是否为引号
- servicenow - 如何在 Servicenow 中查找当前用户和组织详细信息
- javascript - 从字符串末尾修剪一个字符时,ngModel 不反映更改
- python - 来自不同尺寸集合的元素的所有可能组合