如何在Go中添加两个任意大数字?

时间:2015-08-27 15:12:28

标签: go

当我添加两个非常大的浮点数时,输出错误。我怎么能在Go中这样做? PHP具有bcadd函数。

var a float64 = 12959653081233191386469183112744623843489338314724603559902557916087872259523073406440221030943397504960564327459290759156915189196536625503825265749393408
var b float64 = 1302494993937727547864388263735304125561725318351673964024430436931705604299209078600534362879064309484886438718428990856894006118477463552
// correct value: 12959653081233192688964177050472171707877602050028729121627876267761836283953510338145825330152476105494927206523600244043353907625527482397831384226856960
// actual output: 12959653081233192875034890470147535688504496869357889916160064603715259716015001328389483087182344476999836189247073027598559438829669033382689401152208896
fmt.Println(strconv.FormatFloat(a+b, 'f', 0, 64))

1 个答案:

答案 0 :(得分:5)

  谁可以帮助我?在php中有bcadd函数

bcadd及其朋友是任意精度算术函数(这就是他们操作字符串而不是浮点数的原因)。浮子的精度有限。实际上,bcmath提供的精度比浮点数高得多。

使用math/big