293 Star 1.6K Fork 381

GVP合宙Luat / LuatOS

 / 详情

string.format()格式化浮点数错误

已完成
缺陷
创建于  
2022-12-04 22:30

如果不按该格式进行填写,开发者可能会忽略或直接关闭该issue。

固件版本

  • 固件名称:如 LuatOS@EC618 base 22.12 bsp V1002 32bit。
  • 使用设备:如 ec618
  • 使用功能:如 string.format()

描述一下这个问题

使用string.format()格式化部分浮点数错误。

复现步骤

预期的行为

正确格式化数据。

截图

如果需要,请放上你的截图

日志

如有必要,请放上你的日志

最小复现工程

提供最小复现工程可以更快地让开发人员复现问题,检查问题原因

        local number1 = 123456.12
        local number2 = 12345678.12
        local number3 = 123456789.12
        log.info("number", number1, number2, number3)
        log.info("number %.2f",string.format('%.2f,%.2f,%.2f', number1, number2, number3))
        log.info("number %.3f",string.format('%.3f,%.3f,%.3f', number1, number2, number3))

log

[2022-12-04 22:25:20.491][000000018.267] I/user.number	123456.1	1.234568e+07	1.234568e+08
[2022-12-04 22:25:20.498][000000018.268] I/user.number %.2f	123456.12,12345678.00,123456792.00
[2022-12-04 22:25:20.505][000000018.268] I/user.number %.3f	123456.117,12345678.000,123456792.000

格式化后的数据与原数据不同。

评论 (4)

孟巍 创建了缺陷

新建issues,自动分配负责人进行确认

孟巍 负责人设置为Wendal

原因是32bit的LuaVM的浮点数也是32bit的, 123456789.12用32bit是无法精确表达的

所以, 启用 64bit 模式可以解决这个问题,就是宏 LUAT_CONF_VM_64bit

V1002预计会32bit/64bit固件同时推出, 或者只出64bit的, 仍在思考中

64bit下的打印如下

[2022-12-04 23:30:28.162] I/user.number	123456.12000000	1.2345678120000e+07	1.2345678910000e+08
[2022-12-04 23:30:28.162] I/user.number %.2f	123456.12,12345678.12,123456789.12
[2022-12-04 23:30:28.162] I/user.number %.3f	123456.120,12345678.120,123456789.120

收到,有机会我试试

Wendal 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(2)
4674 wendal 1578914274
Lua
1
https://gitee.com/openLuat/LuatOS.git
git@gitee.com:openLuat/LuatOS.git
openLuat
LuatOS
LuatOS

搜索帮助

53164aa7 5694891 3bd8fe86 5694891