文章目录

    • 问题
    • 解决
    • 注意

问题

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.pswp.cn/news/917981.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917981.shtml
英文地址,请注明出处:http://en.pswp.cn/news/917981.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB学习专题(六)复制集和分片集群

1、概念MongoDB复制集的主要意义在于实现服务高可用,类似于Redis中的哨兵模式2、功能1. 数据写入主节点时将数据复制到另一个副本节点上2. 主节点发生故障时自动选举出一个新的替代节点在实现高可用的同时,复制集实现了其他几个作用数据分发:…

vue3对比vue2的性能优化和提升 :Vue 3 vs Vue 2

1.性能提升 1.1.响应式系统的改进: 从 Object.defineProperty 到 Proxy Vue2:Vue 2 的响应式系统基于 Object.defineProperty,它为每个属性单独设置 getter 和 setter。虽然能够满足基本需求,但它在以下方面存在性能瓶颈: Vue2 中数组监听的局限性:Vue2 通过Object.defi…

进程生命周期管理:从创建到终止的完整逻辑

前言 在操作系统的世界里,进程就像一个个忙碌的 “工作单元”,从被创建到完成任务后终止,始终遵循着一套严谨的生命周期规则。理解进程的生命周期管理,是揭开操作系统多任务调度神秘面纱的关键 —— 而这其中,进程的创…

【显示器】背光板的结构和工作原理

背光板是LCD(液晶显示器)中的一个重要组件,它负责提供屏幕所需的光源。下面我们详细解释背光板的结构和工作原理。背光板的基本结构一个典型的背光板由以下几个主要部分组成:LED灯条:通常使用白色LED作为光源。导光板&…

hadoop HDFS 重置详细步骤

有时候我们需要对hdfs重置,步骤如下: 1、停止服务 2. 清除日志节点ssh dmp-hdfs-ns1 rm -rf /disk1/dfs/jn/meta/*ssh dmp-hdfs-ns2 rm -rf /disk1/dfs/jn/meta/*ssh dmp-hdfs-dt1 rm -rf /disk1/dfs/jn/meta/*ssh dmp-hdfs-dt2 rm -rf /disk1/dfs/jn/me…

前端性能优化:从请求到资源的精细调控

在用户体验为王的时代,前端性能直接决定产品的留存率。本文聚焦 “减少不必要的传输与加载损耗”,从 合并HTTP请求、启用压缩、减少Cookie、资源加载顺序 四个维度,拆解优化思路与落地方法。 一、合并HTTP请求:突破浏览器并发瓶颈…

【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博舆情数据可视化分析-热词情感趋势柱状图

大家好,我是java1234_小锋老师,最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)视频教程,持续更新中,计划月底更新完,感谢支持。今天讲解微博舆情数据可视化分析-热词情感趋势柱状图…

脚本统计MongoDB集合结构信息

场景: 当想统计mongodb集合的结构是什么数据类型时。 1.利用variety.js解析 https://github.com/variety/variety 2.脚本 #!/bin/bash#userxxx #passwxxx host1xx.1x.1x.150 port27010 dbhgrtabs$(echo "show collections"|mongo ${host}:${port}/${db}|g…

订单簿流动性分析与机器学习在大单匹配中的应用

一、订单簿流动性的基本概念 1.1 订单簿的结构与组成 在金融市场中,订单簿(Order Book)是买卖双方提交的限价订单的集合,通常以价格优先、时间优先的原则进行排序。订单簿由多个层级的价格档位组成,每个档位包含若干限…

CSS :is () 与 :where ():简化复杂选择器的 “语法糖”

在 CSS 编写中,你是否遇到过这样的场景:需要给多个不同父元素下的子元素设置相同样式,结果写出一长串重复的选择器?比如给header、main、footer中的p标签设置相同的颜色,传统写法可能是header p, main p, footer p { c…

vue打包号的文件如何快速查找文件打包后的位置

解析“explorer yz-front-dist”:前端开发者的实用命令小知识 在前端开发的日常工作中,我们经常会接触到各种命令行操作,其中“explorer yz-front-dist”是一个看似简单却暗藏实用价值的命令。对于刚接触开发的新手来说,理解它的含…

Go语言数据类型深度解析:位、字节与进制

Go语言数据类型深度解析:位、字节与进制 在计算机编程中,数据类型是构建一切的基础。理解不同数据类型的特性、内存占用以及在不同场景下的应用,对于编写高效、可靠的代码至关重要。 本文将深入探讨Go语言中的数据类型系统,重点讲…

计算机视觉(opencv)——图像本质、数字矩阵、RGB + 基本操作(实战一)

OpenCV 入门教程: OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,广泛应用于图像处理、视频分析、机器学习等领域。 在 Python 中,cv2 是 OpenCV 的主要接口模块。本文将带你一步步掌握 cv2…

【数据库】使用Sql Server创建索引优化查询速度,一般2万多数据后,通过非索引时间字段排序查询出现超时情况

大家好,我是全栈小5,欢迎来到《小5讲堂》。 这是《Sql Server》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录前言SQL 创建索引…

MyBatis联合查询

文章目录数据库设计MyBatis 配置MyBatis 映射文件Mapper 接口总结数据库设计 建表 SQL CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL );CREATE TABLE order (id INT PRIMARY KEY AUTO_INCREMENT,user_id INT NOT NULL,order_no VARCHAR(…

项目中使用的设计模式

项目中使用的设计模式请列举几个项目中常用的设计模式什么是设计模式,在项目中使用了那些设计模式动态代理模式JDK动态代理CGLIB动态代理单例模式懒汉式(非线程安全)饿汉式懒汉式(线程安全)工厂模式观察者模式装饰器模…

实战教程:从“对象文件为空“到仓库重生——修复 Git 仓库损坏全记录

文章目录实战教程:从"对象文件为空"到仓库重生——修复 Git 仓库损坏全记录案发现场:一个严重损坏的仓库修复之旅:四步让仓库重获新生准备工作:创建安全备份第 1 步:清理战场——删除所有空对象第 2 步&…

ansible 操作家族(ansible_os_family)信息

1. 操作系统系列 (ansible_os_family)ansible web -m setup -a filteransible_os_family2. 操作系统家族为 RedHat 时执行任务--- - hosts: websrvsremote_user: roottasks:- name: Install package on RedHat systemsyum:name: httpdstate: presentwhen…

一文学会c++继承 组合

文章目录继承简介定义访问限定符和继承方式⭐基类派生类赋值转换继承的作用域派生类的默认成员函数继承与友元继承与静态成员⭐复杂的菱形继承虚拟继承组合继承简介 继承是面向对象程序设计代码复用的重要手段,使得程序员可以在保持原类的基础上扩展,新…

.Net下载共享文件夹中的文件

由于IIS站点权限等问题,总是没找到处理办法,所以改用外挂的winform的方式来下载共享文件(也可以改为使用windows服务的方式)。 前提需要先在资源管理器中登录到共享文件夹,确保系统能访问。 服务端代码 (.NET后端) usi…