Go json: unsupported value: NaN

【Golang】Json 无法表示 float64 类型的 NaN 以及 Inf 导致的 panic 在 float64 类型中,我们可以通过 zero/zero 来得到 NaN,也可以用过 除零 操作来得到 Inf,在 Google 并没有得到能解释这两种常量存在的原因,只从二进制浮点数算术标准(IEEE 754)看到有相关的定义。结果:可以看待对于 NaN,每次赋值的时候,其实都是给不同的 key 赋值,而 Inf 则不是;:基本可以判断出:NaN 以及 Inf 是 float64 类型的两种特例,Json 无法表示这类数据,故 panic。查阅 log 看到,这里最原始的。,明明是字符串,是如何将。 阅读详情

1. 简介

除数为浮点数并且值为0时不会引发panic,此时得到的结果是NaN是不可以用来进行数学运算和JSON对象序列化反序列化。

下面是对问题复现。

2. 演示

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	var i int64 = 0
	var j int64 = 0
	var f float64 = float64(i) / float64(j)
	fmt.Println(f) // Output: NaN

	// JSON
	type Example struct {
		F float64
	}
	data, err := json.Marshal(Example{F: f})
	if err != nil {
		panic(err)
	}
	fmt.Println(string(data))
}

Output

NaN
panic: json: unsupported value: NaN

goroutine 1 [running]:
main.main()
        /Users/yimt/Code/GoProjects/src/hello-go/main.go:20 +0xe9

3. 除0异常

3.1. 正常情况下

正常除数是0会引起panic

package main

import "fmt"

func main() {
	var i int64 = 0
	var j int64 = 0
	fmt.Println(i / j)
}

Output

panic: runtime error: integer divide by zero

goroutine 1 [running]:
main.main()
        /Users/yimt/Code/GoProjects/src/hello-go/main.go:8 +0x11

3.2. 例外情况

除数是0但是没有引起panic

package main

import "fmt"

func main() {
	var i int64 = 0
	var j int64 = 0
	var f float64 = float64(i) / float64(j)
	fmt.Println(f)
}

Output

NaN
Notebook到生产级API:机器学习模型服务化实战指南 机器学习模型服务化是将训练完成的模型转化为稳定、可监控、可扩展的线上API的关键过程。其核心在于跨越环境、接口与运维三大断层,解决依赖管理、序列化安全、特征一致性及高并发承载等工程挑战。ONNX格式因其跨语言兼容性与版本稳定性,正逐步替代Pickle成为生产首选;FastAPI凭借高性能序列化与原生OpenAPI支持,在轻量模型服务中展现出显著优势。该过程广泛应用于实时风控、推荐系统与智能客服等需低延迟响应的业务场景,本质是算法能力向工程化交付能力的跃迁。 阅读详情

相关推荐

机器学习模型上线实战:从Notebook到Kubernetes生产部署

机器学习模型服务化是将训练完成的模型转化为稳定、可监控、可扩展的在线API的关键过程。其核心原理在于解耦开发与生产环境,通过标准化序列化(如ONNX)、容器化封装(Docker)、声明式编排(Kubernetes)及可观测性集成(Prometheus+FastAPI),确保推理服务具备确定性、类型安全与高可用性。该技术路径显著提升模型交付效率与系统稳定性,广泛应用于电商风控、IoT预测性维护和医疗辅助诊断等实时决策场景。本文聚焦真实落地中的模型持久化选型、FastAPI服务构建、Docker多阶段构建及K8

weixin_34110749的博客 333

解决golang json: unsupported value: NaN

遇到这种 json: unsupported value: NaN 大部分是因为我们处理数值型的数据时,出错,导致变成了NaN no a number 然后序列化json的时候,如果值是NaN ,就会出现这个错误 仔细检查我们前面处理数据部分,看看有没有判断不严谨的地方 我的是因为,进行除法运算的时候,除数可能是0 ,就会出错,加上判断非0后正常了 当然如果实在找不到原因,为了防止出现这个错误...

程序员老狼专注开发aigc或客服系统应用 2603

机器学习生产落地:从Notebook到高可用模型服务的七道关卡

机器学习模型上线不是训练完成就结束,而是进入以稳定性、可观测性、可运维性为核心的MLOps工程阶段。其本质是将算法能力转化为符合业务SLA的在线服务,涉及模型序列化(如ONNX)、特征一致性、容器化部署(Triton Inference Server)、流量治理(熔断降级)、可观测性(日志/指标/链路追踪)、热更新与安全合规等关键环节。工业级实践表明,90%的线上效果衰减源于训练与推理特征不一致,而80%的服务故障可通过分层架构实现快速定界。本文聚焦真实世界中的模型服务落地路径,覆盖从本地开发、CI/CD流

cnvdkx2837的博客 554

golang json unsupported value: NaN 处理

golang 计算 math.Pow 导致数值变成了NaN使用Python计算没有这个问题 但使用GoLang 计算出来的结果是NaN

____ 2299

从Notebook到生产:机器学习模型落地的工程化实战指南

机器学习模型部署不是简单的‘跑通’,而是涉及模型服务化、可观测性、数据漂移监控与韧性设计的系统工程。其核心在于将离线训练成果转化为高可用、可监控、易协作的线上服务能力,关键技术包括ONNX模型序列化、Triton推理服务、特征存储(Feature Store)与Prometheus+Grafana可观测体系。在金融风控、电商推荐等真实场景中,模型的持续有效性高度依赖输入输出契约(如Protobuf定义)、实时数据质量保障及业务可理解的告警机制。本文聚焦ML in the Real World中的关键生存技能

weixin_34258838的博客 383

ML模型生产化落地:从Notebook到稳定服务的12个关键实践

机器学习模型部署(ML Deployment)不仅是将训练好的模型封装为API,更是构建具备高可用、可观测、可回滚能力的生产级服务。其核心原理在于应对生产环境的混沌性——数据格式突变、依赖版本漂移、流量峰谷冲击等现实挑战。技术价值体现在保障模型服务稳定性、降低运维救火频率、实现故障分钟级定位与自动恢复。典型应用场景包括金融风控实时评分、IoT设备预测性维护、电商个性化推荐等需低延迟、高可靠推理的业务系统。本文聚焦ML部署落地中的真实痛点,深入解析数据契约校验、Triton GPU资源治理、黄金信号驱动的可观

a1311010193的博客 469

大幅提升 golang 写日志序列化性能实践

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34402408的博客 439

从Notebook到生产:ML模型服务化落地全链路实践

机器学习模型服务化(ML Serving)是将训练完成的模型转化为稳定、低延迟、高可用API的关键工程环节。其核心原理在于解耦特征计算、模型推理与业务编排,通过标准化格式(如ONNX)、专用推理服务器(如Triton)和可观测性体系实现性能与可维护性平衡。技术价值体现在降低GPU资源开销、提升P99延迟确定性、支持灰度发布与快速回滚。典型应用场景包括实时推荐、金融风控、广告竞价等对延迟和可靠性敏感的线上业务。本文聚焦ML in the Real World落地中最具挑战的Part 4阶段,深入解析模型打包、

weixin_33720078的博客 418

golang 使用json序列化报 NaN +Inf 解决方法

无论是encoding下面的那个工具包,在序列化和反向序列化数据的时候,如果报NaN 或者Inf等字样,表示需要序列化的数据有问题。NaN 代表 不是一个数 Not a numberInf  代表 阶码溢出,前面的加减符号代表高地位溢出,说白了就是小数点位后面无限大,再别的地方使用不能很好的序列化解决办法 使用fmt.Sprintf("%0.2f",浮点数) 输出一个字符串的固定位的浮点数,在把这...

nimei31的博客 1万+

模型服务化实战:从Notebook到高可用AI生产服务

模型服务化是机器学习落地的核心环节,指将训练完成的模型封装为稳定、可观测、可治理的在线API服务。其本质在于解决实时推理延迟、数据漂移检测、在线评估与灰度发布等工程挑战,突破‘Notebook幻觉’——即模型在离线验证中表现优异,却在线上因输入变异、资源争抢或版本混乱而失效。关键技术价值体现在保障SLA、支撑A/B测试、实现闭环反馈,并驱动业务指标持续优化。典型应用场景包括金融风控实时决策、工业质检毫秒级响应、电商推荐高并发服务等。本文聚焦真实产线中的模型服务化落地,深入解析ONNX/TorchScript

weixin_34192816的博客 445

机器学习生产化落地:模型服务、可观测性与CI/CD实战

机器学习模型从开发到生产并非简单部署,而涉及模型服务化、系统可观测性、持续交付流水线及基础设施即代码四大核心能力。模型服务需超越Flask等通用框架,采用Triton或KServe实现高吞吐、低延迟与资源复用;可观测性不能仅依赖传统监控,必须覆盖预测延迟、数据漂移(Data Drift)、特征分布偏移(PSI/KL散度)等ML特有指标;CI/CD for ML需验证数据+模型+API契约+金丝雀效果,而非仅代码;IaC则保障环境一致性与版本可追溯。本文聚焦ONNX模型序列化、Feast特征获取优化、KSer

angou6476的博客 444

从Notebook到生产环境:机器学习模型服务化落地实战

机器学习模型服务化是将训练完成的模型稳定、高效、可观测地部署至线上环境的关键工程环节。其核心在于解决状态隔离、资源硬限与可观测性嵌入三大挑战,而非简单运行推理代码。技术原理上需兼顾多框架兼容性、动态批处理优化与GPU显存管理;工程价值体现在故障域隔离、迭代解耦与成本可控;典型应用场景覆盖电商推荐、实时风控与A/B测试等高并发低延迟业务。本文聚焦Triton模型服务化实践与Go网关层设计,深入解析模型导出、config.pbtxt调优、特征漂移监控及热更新原子性等真实落地细节。

weixin_30892889的博客 442

JSON_with_NaN:带有NaN的JSON(和Infinity-Infinity)

带有NaN的JSON(以及Infinity / -Infinity) 即使在现代浏览器中开箱即-Infinity支持JSON,它们都不支持NaN , Infinity或-Infinity作为JSON中的值。 这是因为JSON规范不允许这些值。 但是有时能够传递所有Javascript数字很有用,因此该项目通过提供JSON.stringifyWithNaN和JSON.parseWithNaN函数解决了该问题。 使用JSON.stringifyWithNaN创建的字符串应与带有allow_nan=True 兼容(默认设置)。 用法 JSON.stringifyWithNaN(value[, replacer[, space]]) JSON.parseWithNaN(text[, reviver]) 有关参数的更多信息,请参见MDN中有关和文章。

Kubernetes+Triton模型服务化实战:高并发低延迟生产部署指南

模型服务化是机器学习落地的核心瓶颈,本质是将单次推理范式升级为高并发、低延迟、可观测的工程系统。其核心原理在于解耦计算、路由、预处理与监控,并通过动态批处理、GPU实例切分、声明式编排等技术提升资源韧性与服务稳定性。技术价值体现在显著降低P95延迟(实测下降52%)、提升QPS(达2150+)及保障业务SLA。典型应用于金融风控实时决策、电商个性化推荐、IoT边缘预测等强实时场景。本文基于Kubernetes与NVIDIA Triton组合方案,深入解析模型导出校验、config.pbtxt调优、自定义网关

weixin_30381317的博客 387

go-pyjson:支持NaN和Infinity的golang JSON解析器,与Python一样

go-pyjson golang标准库JSON解析器的分支版本,支持Python JSON实现所支持的NaN / Infinity。 为什么? JSON规范不允许NaN和Infinity ,但Python JSON实现允许。 当交换浮点数据时,这对于与Python JSON实现互操作性很有用。 这是python的作用: >>> json.dumps([math.nan, math.inf, - math.inf]) '[NaN, Infinity, -Infinity]' golang项目似乎不支持将此选项添加到标准库实现中。 执照 这只是对标准库的JSON解析器的修改,因此它是在相同的BSD样式许可下提供的。

秋叶ComfyUI整合包:一键部署AI绘画工作流,解决环境配置难题

在AI绘画和生成式AI领域,Stable Diffusion作为开源的扩散模型,为图像生成提供了强大的技术基础。其核心原理是通过学习数据分布,对随机噪声进行逐步去噪,最终生成高质量的图像。这项技术的价值在于极大地降低了专业图像创作的门槛,并推动了AIGC(人工智能生成内容)在艺术设计、游戏开发、广告营销等场景的广泛应用。然而,其典型工作流实现工具ComfyUI,在实际部署中常因Python环境、PyTorch版本与CUDA驱动之间的复杂依赖关系而受阻,尤其是面对NVIDIA 30系、40系及未来50系等不同

优快云头条 668

ML生产化落地:从Notebook到高可靠模型服务的工程实践

机器学习模型部署不是简单的API封装,而是面向真实业务场景的系统可靠性工程。其核心在于理解模型在生产环境中的脆弱性来源——数据漂移、基础设施不稳定性与业务逻辑耦合。通过MLOps pipeline构建端到端可监控、可降级、可热更新的服务体系,能显著提升model serving的real-world reliability。关键技术包括专用推理服务器(如Triton)、特征治理(Feature Store)、多层防御架构与标准化模型导出(ONNX/TensorRT)。本文聚焦从算法验证到工业级上线的关键跃迁

dieyuqi2955的博客 402

2024年全国大学生电子设计竞赛H题_自动行驶小车

自动行驶小车(H题)【本科组/高职高专组】

qq_74395263的博客 1万+

ML生产化实战:四层架构实现模型从Notebook到K8s稳定推理

机器学习模型服务化(Model Serving)是MLOps落地的核心环节,其本质是将离线训练成果转化为高可用、低延迟、可观测的在线基础设施。关键技术原理包括特征供给与模型执行的物理隔离、编译型推理引擎(如Triton/ONNX Runtime)替代Python原生服务、基于契约的API网关治理,以及指标-日志-追踪三位一体的线上可观测性体系。该方案显著提升推理稳定性与资源利用率,支撑电商推荐、金融风控、工业预测等实时业务场景。本文聚焦真实产线中‘模型不敢上线’‘线上延迟突增’‘版本混乱’等高频痛点,详解分

weixin_33748818的博客 342

【异常】XXL-JOB提示异常ERROR com.xxl.job.core.util.XxlJobRemotingUtil - connect timed out

打开XXL-JOB的ELK,发现一堆报错。

奶爸的编程之路,也就一周冷个三天 2046

YOLO26原创自研: 魔改Bottleneck,具备多尺度和特征通道融合的结构

魔改Bottleneck,具备多尺度和特征通道融合的结构,该模型在检测准确性方面都取得了良好的效果,尤其在缺陷检测方向。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 315

Python数据加载生存指南:应对CSV/HDF5/Parquet/SAS等10+格式实战

数据加载是AI工程与数据管道的基石环节,其本质是将磁盘文件按特定存储结构(如文本流、列式布局、分层二进制)高效映射为内存对象。理解底层原理——包括文件元数据、压缩机制、chunk读取与dtype内存模型——直接决定ETL延迟、内存峰值与pipeline鲁棒性。在真实场景中,CSV易爆内存、Excel含合并单元格与公式、SAS携带丰富业务元数据、HDF5支持分块访问、Parquet与Feather依托Arrow实现零拷贝,而NumPy .npy则提供极致mmap加载性能。本文聚焦AI落地中高频出现的10+异构

weixin_30500473的博客 353

2026年软考高级网络规划设计师备考指南

在国家网络安全法律法规和政策的指导下,能够依据网络技术发展的趋势进行计算机网络领域的需求分析、规划设计、部署实施、评测、运行维护等工作。 在需求分析阶段,写出网络系统需求规格说明书;在规划设计阶段,完成逻辑结构设计、物理结构设计,选用适宜的网络设备,按照标准规范编写系统设计文档及项目开发计划;在部署实施阶段,组织项目施工,对项目实施过程进行质量控制、进度控制、成本管理,能具体指导项目实施;在评测运维阶段,能根据相关标准和规范对网络进行评估测试,能制定运行维护、故障分析与处理机制,确保网络提供正常服务;

鹿鸣天涯 1万+
上一篇: Docker | 缓存依赖
下一篇: C++ | 学习笔记
yimtcode
博客等级 码龄6年 205粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yimtcode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值