cockroachdb / cockroachdb/apd

Loss of precision when round-tripping with float64

オープン
#142 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Go
スター
805
フォーク
48
PR マージ指標
30日以内にマージされた PR はありません

説明

Given a high enough integer value, apd seems to lose precision after some round-trips:
```
package main

import (
"math/rand/v2"
"testing"

"github.com/cockroachdb/apd/v2"
)

func TestRoundTrip(t *testing.T) {
// This number is exactly representable as a float64:
f64 := float64(rand.Int64())

dec := apd.New(0, 0).SetInt64(int64(f64))

f64RT, err := dec.Float64()
if err != nil {
t.Fatalf("round-trip f64->dec->f64: %v", err)
}

if f64 != f64RT {
t.Fatalf("mismatched: expect %f; got %f", f64, f64RT)
}

dec2, err := apd.New(0, 0).SetFloat64(f64)
if err != nil {
t.Fatalf("round-trip f64->dec->f64->dec: %v", err)
}

if dec.Cmp(dec2) != 0 {
t.Fatalf("mismatched: expect %v; got %v", dec, dec2)
}
}
```

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。