登录
首页 >  Golang >  Go问答

golang实现完整精度浮点数计算

来源:stackoverflow

时间:2024-03-01 09:15:27 104浏览 收藏

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《golang实现完整精度浮点数计算》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

使用小数点200作为精度,我需要计算一个从atto到小数的数字,类似于屏幕截图。


正确答案


您也可以使用 github.com/shopspring/decimal 包来实现此目的。该库可以表示最多 2^31 (2147483648) 位的数字。下面是一个简单的计算代码:

d := decimal.newfromint(99707)
d10 := decimal.newfromint(10)
dpow := decimal.newfromint(-18)
d10pow := d10.pow(dpow)
dmul := d.mul(d10pow)
fmt.println(dmul)

这可以简化为:

d := decimal.newfromint(99707).mul(decimal.newfromint(10).pow(decimal.newfromint(-18)))
fmt.println(d)

输出:0.000000000000099707

参见playground

要获得nano和atto精度的值,您可以分别在fmt.printf()中使用%.9f%.18f,我创建了一个小程序来获取您的值0.000000000000099707 的值如下:

package main

import (
    "fmt"
    "math"
)

func main() {

    powr := math.pow(10, -18)
    numb := 99707 * powr
    fmt.println("number", numb)
    fmt.printf("\nthe value in atto %.18f\n", numb)
}

输出:

number 9.970700000000001e-14

the value in atto 0.000000000000099707

终于介绍完啦!小伙伴们,这篇关于《golang实现完整精度浮点数计算》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>