我们假设你需要 整数与小数一起进行运算,或者 整数除以整数 得到小数这种运算

如果你使用了decimal, 那么之后所有的运算你都必须使用decimal,

因为通过它计算出来的结果的类型统统为decimal.Decimal,与float64和int无法一起运算。

使用过程如下:

  • 首先你需要安装 decimal,
    运行: go get github.com/shopspring/decimal
  • 在运算开始前,设置你需要的精确的小数位数,自动四舍五入
    decimal.DivisionPrecision = 2 // 保留两位小数,如有更多位,则进行四舍五入保留两位小数

加法 Add

    2.1 + 3 float和int相加
var num1 float64 = 3.1
var num2 int = 2
d1 := decimal.NewFromFloat(num1).Add(decimal.NewFromFloat(float64(num2)))
// 这里注意了,此时我们使用一个浮点数 加上 一个整数
// 这里num2 是整数,所以我们通过float64()将它强转为小数,然后进行计算即可,
// 如果两个都是小数则无需使用float64()
// 如果是两个整数也都无需使用float64(), 16/4=4, 16/5=3.2 他们的结果都是 decimal.Decimal 类型,可以通过reflect.TypeOf()方法进行测试,

减法 Sub,乘法 Mul, 除法 Div 用法均与上述类似,不再一一列举。

在计算完成后,返回的数据类型为decimal.Decimal,如你需要转换为常见的数据类型

    比如,此时test的类型为decimal.Decimal,你需要将起转化为float64

    test := decimal.NewFromFloat(16.25).Div(decimal.NewFromFloat(float64(8)))

    // 通过Float64() 方法来实现

    windLevel, _ := test.Float64()

    // 类似的方法还有 String(), 总之decimal提供了很多实用的数据工具,大家需要计算时可以看看文档或者源码

    // Round() 可以进行四舍五入
NewFromFloat(5.45).Round(1).String() // output: "5.5"

golang整数与小数间的加减乘除的更多相关文章

  1. bigdecimal解决小数间的加减乘除

    public class bigdecimal { public static BigDecimal div(double v1,double v2){ BigDecimal b1=new BigDe ...

  2. Python 正则表达式:只要整数和小数

    要求用户只能输入数字(包括整数和小数),如何用正则表达式验证用户输入? 有两种思路: 1. 给出正确格式的正则表达式,然后看输入是否合法. 2. 列出所有错误的输入,看输入是否非法. 对于思路1,想想 ...

  3. 【转】Java判断是否是整数,小数或实数的正则表达式

    经常会遇到这样的情况,需要判断一个字符串是否是一个合法的数,包括整数,小数或者实数. 网上查到很多文章大多是判断这个字符串是否全为数字,比如下面这段来自StringUtils的代码,可以看到,13.2 ...

  4. SQL判断一个数是整数还是小数

    DECLARE @number1 AS numeric(10,2),@number2 AS numeric(10,2) SELECT @number1=10.00,@number2=10.2 SELE ...

  5. EditText 限制输入整数和小数 的位数

    如题,本文主要说的就是  如何限制 EditText 中 可输入整数和小数 的位数 . 近期,由于公司业务需求中有价格输入功能,给出的要求说是,必须整数能输入几位,小数能输入几位...好嘛,产品一句话 ...

  6. JAVA 把小数分成整数和小数

    在进行进制转换的时候,我们需要把小数分为整数和小数两部分. 这里介绍两种方法. 第一种举个例子:1.23分为1 和 0.23 第二种:1.23 分为 1 和23 有时需要具体情况具体分析自己需要哪种类 ...

  7. python使用xlrd读取excel数据时,整数变小数的解决办法

    python使用xlrd读取excel数据时,整数变小数: 解决方法: 1.有个比较简单的就是在数字和日期的单元格内容前加上一个英文的逗号即可.如果数据比较多,也可以批量加英文逗号的前缀(网上都有方法 ...

  8. js 正则表达式 整数或小数

    非零开头的整数或小数 /^[1-9][0-9]*([.][0-9]+)?$/ 非零开头的整数或两位小数 /^[1-9][0-9]*([.][0-9]{1,2})?$/ /^[1-9][0-9]*([. ...

  9. JS-正则表达式 限制输入整数、小数

    //只可以输入整数 onkeyup="value=value.replace(/[^\d]/g,'')" //可以输入数字 包括小数 onkeyup="value=val ...

随机推荐

  1. [!] The version of CocoaPods used to generate the lockfile (1.4.0.beta.1) is higher than the version of the current executable (1.3.0.beta.1). Incompatibility issues may arise.

    今天在看一个开源Demo代码的时候,需要执行pod install命令,直接报错如下: 解决方法: 执行:pod update 命令更新资源库即可.

  2. 遍历日期的Linux Shell脚本

    #! /bin/bash date=$1 eddt=$2 while [ $date -le $eddt ]; do echo $date date=$(date -d "${date}+1 ...

  3. webdriervAPI(定位一组元素)

    通过定位一组元素的方法来,来勾选自己需要勾选的选项. from selenium import webdriver from selenium.common.exceptions import NoS ...

  4. cocos2dx图片加密解密(npk方式)

    话不多说,直接开始: 准备的工具: 链接:https://pan.baidu.com/s/1Om4kBNWcG2jL_RTsHqqzpQ 提取码:bv7i npkCreate.exe是加密图片的工具, ...

  5. vulstudy

    vulstudy是专门收集当下流行的漏洞学习平台,并将其制作成docker镜像,方便大家快速搭建环境,节省搭建时间,专注于的漏洞学习上.目前vulstudy包含以下漏洞学习平台: 序号 漏洞平台 包含 ...

  6. redis 获取方式和安装(windows)

    Windows redis :https://github.com/MSOpenTech/redis/releases Linux redis :https://github.com/phpredis ...

  7. 【IDEA】格式化代码技巧汇总

    1.格式化 Java 代码 快捷键:Ctrl+Alt+L 2.格式化 Mapper 文件中的 SQL 关联到数据库,让 IDEA 认识你的 SQL.如何关联?选择右侧的database,添加数据库即可 ...

  8. centos7:ssh免密登陆设置及常见错误

    目录 一.免密登录设置 二.常见错误 三.CentOS7再ssh-copy-id时的错误 一.免密登录设置 1.使用root用户登录,进入到目录/root/.ssh 2.执行命令:ssh-keygen ...

  9. SQL SERVER导入EXCEL文件:无法创建链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Ace.OLEDB.12.0" 的实例。

    [方法一] --开启导入功能    exec sp_configure 'show advanced options',1    reconfigure    exec sp_configure 'A ...

  10. java中JDBC是什么?

    [学习笔记] JDBC是什么? JDBC即(java database connectivity数据连接).JDBC是Sun公司编的一堆类和方法,都封装在java.sql包中.你可以利用这堆类和方法来 ...