precision - HP Nonstop Tandem T4SQLMX 驱动程序双精度问题
问题描述
我使用 T4SQLMX 类型 4 jdbc 驱动程序从 SQL/MX 表中读取双精度字段。实际值为29963.26,但是,使用 jdbc 驱动程序读取的值似乎是29963.260000000002。即使我将其读取为 resultset.getString() 或 resultset.getBigDecimal(),这似乎也是一个问题,因为驱动程序总是返回 29963.260000000002。
同样,值99.76返回为99.759999999999。我们使用 CAIL 从 SQL/MX 表中查看实际值99.76,SQL-Squirrel 客户端和 web-app 使用 sqlmx jdbc 驱动程序,我们看到的值为99.759999999999
有没有人遇到过这个或类似的问题并且有解决这个问题的方法?
解决方案
我将 double 包裹在 BigDecimal 中,然后使用 setscale 到 2 位
BigDecimal.valueOf((resultset.getDouble(<column name here))).setScale(2, RoundingMode.HALF_UP));
推荐阅读
- javascript - 我可以将 Django 对象值解释为 HTML 中 JS 脚本中的 JSON 数据吗?
- bash - Goaccess 处理多个日志
- python - Python - 在gcode修饰符的if语句中出现多个“或”条件
- android - Android Room 教程不建
- arrays - 如何在 Reactjs 中使用 clickHandler 和 useState 更新对象数组
- json - 如何在 Swift 中处理 json null 值?
- css - 如何使用 purescript-css 将 CSS 边距属性设置为自动?
- node.js - 如何修复“验证错误:用户验证失败:名称:需要路径‘名称’。” 蒙古错误?
- javascript - 如何通过我在 https 上托管的 reactjs-app 向我在 http 上托管的 rest-api 提出上诉来解决错误
- java - 如何以最小顺序从反馈列表中找到每个用户给出的最新反馈?