You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Aeson中使用Number(realToFrac)生成的浮点数带有过多的小数位。

在 Aeson 中,使用 Number 类型表示 JSON 中的数字。由于 Haskell 的类型系统限制,Aeson 中的 Number 类型只能表示有理数,而不能表示浮点数。因此,如果我们需要将一个浮点数转换为 JSON,就需要先将其转换为有理数,例如使用 realToFrac 函数,然后再将其转换为 Number 类型。

然而,由于浮点数本身就是不精确的,因此对于某些浮点数,转换为有理数后可能会出现过多的小数位,从而导致 JSON 编码时出错。

解决这个问题的方法是,将 realToFrac 的结果舍入到合适的精度。具体来说,我们可以使用 fromRational 函数将有理数转换为浮点数,并指定所需的小数位数。例如:

import Data.Aeson
import Data.Scientific

toFloat :: Double -> Value
toFloat x = Number $ scientific (round $ x * 10^n) (-n)
  where n = 6 -- 需要保留的小数位数

在这个例子中,我们将转换后的数字保留了 6 位小数,并将其存储为 Scientific 类型的值。然后,我们将其转换为 Aeson 中的 Number 类型,即可得到正确的 JSON 编码结果。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

Excelize 开源基础发布 2.8.1 版本,2024 年首个更新

[picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/c32cb84772fc404eb8367579ebbaa841~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1715530834&x-signature=aES%2BYPg... onshipSlicer`* 新增扩展资源标识常量 `ExtURIPivotCacheDefinition`* 允许在自定义名称、表格名称和数据透视表名称中使用点字符* 删除工作表中的表格时,将保留表格区域全部单元格的值* 支持读取带有数字格...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

Aeson中使用Number(realToFrac)生成的浮点数带有过多的小数位。 -优选内容

Excelize 开源基础发布 2.8.1 版本,2024 年首个更新
[picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/c32cb84772fc404eb8367579ebbaa841~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1715530834&x-signature=aES%2BYPg... onshipSlicer`* 新增扩展资源标识常量 `ExtURIPivotCacheDefinition`* 允许在自定义名称、表格名称和数据透视表名称中使用点字符* 删除工作表中的表格时,将保留表格区域全部单元格的值* 支持读取带有数字格...
数据清洗
可能会造成数据量变大,请提前确认数据内容。 1.分隔符拆分:存在城市字段存储内容为「城市-Code」,需要根据分隔符'-'拆分成城市名+城市Code两个字段,此时可以选择分隔符的拆分方式拆分生成两个字段2.按JSON格式拆分... 可定义该序号的具体函数,如分数排名字段。 注意 K值数量:默认1000,仅支持整数,最低不能小于1; 分组字段和排序字段不可重复; 分组字段以及排序字段都是仅支持数值型(整数、浮点数等)、字符串型、日期型、时间型、...
MySQL 函数
**** IF 函数 语法: IF(expr1, expr2, expr3) 描述: 如果 expr1 为 TRUE,则返回 expr2,否则返回 expr3。 需要三个参数,在两个参数场景中使用 NULL 作为可选的第三个参数。 IFNULL 函数 语法: IFNULL(expr1, exp... 将一个数字求另一个数字的幂。 Radians (radians):将角度转换为弧度。 Random Number (rand):生成随机数。 对 0 到 1 之间的数字使用 randCanonical。 Round (round):将数字四舍五入到指定的小数位数。 Sign (sig...
为自定义模型创建版本
后续您在数据流实例中配置模型服务节点时,无需再通过节点的控制参数来指定配置文件(config-file-path)、标签文件(labelfile_path)。 前提条件您已经创建了自定义模型。相关操作,请参见创建自定义模型。 准备工作为... ONNX 模型文件加密说明边缘智能提供模型加密工具。该模型加密工具是一个 Python 脚本,它基于 AES 算法对本地的 .onnx 模型文件进行加密。单击下载模型加密工具(.zip)下载模型加密工具压缩包后,对压缩包进行解...

Aeson中使用Number(realToFrac)生成的浮点数带有过多的小数位。 -相关内容

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询