当前位置: 首页 > news >正文

使用 decimal 包解决 go float 浮点数运算失真

文章目录

    • 问题
    • 解决
    • 注意

问题

go float 在运算的时候会出现精度问题

package mainimport ("fmt"
)func main() {var a float64 = 0.3var b float64 = 0.6fmt.Println("a+b=", a+b) // 你以为是 0.9  但是结果是:0.8999999999999999
}

你观察到的 0.3 + 0.6 = 0.8999999999999999 现象是由于计算机使用二进制浮点数表示十进制小数时的固有精度问题,而不是 Go 语言特有的问题。这是所有使用 IEEE 754 浮点数标准的编程语言都会遇到的情况

解决

使用 decimal 包解决 golang 浮点数运算失真

代码如下:

package mainimport ("fmt""github.com/shopspring/decimal"
)func main() {var a float64 = 0.3var b float64 = 0.6a1 := decimal.NewFromFloat(a)b1 := decimal.NewFromFloat(b)fmt.Println("a+b=", a1.Add(b1)) //  0.9
}

注意

decimal建议只用做 float 计算;不建议用来字符串和浮点数之间转换: decimal.NewFromString(“1”) , 大量数据计算下性能差

原文地址

使用 decimal 包解决 go float 浮点数运算失真

http://www.dtcms.com/a/320059.html

相关文章:

  • 小鸡模拟器安卓版:经典街机游戏的移动体验
  • 利用Axure与JavaScript打造动态图片上传原型:设计案例分享
  • spring-cglib代理-初探01
  • 深度学习-卷积神经网络CNN-1×1卷积层
  • Flink-1.19.0源码详解9-ExecutionGraph生成-后篇
  • UE5多人MOBA+GAS 39、制作角色上半身UI
  • 字符串匹配(重点解析KMP算法)
  • 6 大模块!重构物业运营方式
  • 跨境电商增长突围:多维变局下的战略重构与技术赋能
  • 数智先锋 | Bonree ONE 赋能通威股份有限公司提升全栈可观测性能力
  • 深入解析NVIDIA Nsight工具套件:原理、功能与实战指南
  • 房产证识别在房产行业的技术实现及应用原理
  • Python Socket 脚本深度解析与开发指南
  • 扣扣号码展示网站源码_号码售卖展示系统源码 全开源 带后台(源码下载)
  • 5、倒计时翻页效果
  • 工作任务管理
  • 《C语言》指针练习题--1
  • Python入门Day17:函数式编程(map/filter/reduce/lambda)
  • 浏览器渲染与GPU进程通信图解
  • Numpy科学计算与数据分析:Numpy数组操作入门:合并、分割与重塑
  • PWM常用库函数(STC8系列)
  • 【Linux基础知识系列】第八十七篇 - 使用df命令查看磁盘空间
  • 橙河网络:Cint站点如何注册?好做吗?
  • 街道垃圾识别准确率↑32%:陌讯多模态融合算法实战解析
  • 解锁制药新质生产力:合规与效率双赢的数字化转型之道
  • 基于肌电信号的神经网络动作识别系统
  • docker mysql 5.6
  • CSS--:root指定变量,其他元素引用
  • 【题解】洛谷P3172 [CQOI2015] 选数[杜教筛]
  • 【mtcnn】--论文详解重点001之窗口滑动~