メモの日々


2021年11月10日(水) [長年日記]

[go] big.Rat

Goで有理数を扱えるbig.Ratを使ったのでちょっとメモ。Goのバージョンは1.17.3。

package main

import (
	"fmt"
	"math/big"
)

func printRat(r *big.Rat, text string) {
	fmt.Println(text, r.FloatString(20), r.String())
}

func main() {
	a := big.NewRat(-11, 10)
	b := new(big.Rat).SetFloat64(-1.1)
	c, _ := new(big.Rat).SetString("-1.1")

	printRat(a, "NewRat(-11, 10)   : ")
	printRat(b, "SetFloat64(-1.1)  : ")
	printRat(c, `SetString("-1.1") : `)
}
NewRat(-11, 10)   :  -1.10000000000000000000 -11/10
SetFloat64(-1.1)  :  -1.10000000000000008882 -2476979795053773/2251799813685248
SetString("-1.1") :  -1.10000000000000000000 -11/10
  • SetFloat64() で値をセットすると誤差が入る可能性があることに注意。SetString() を使う場合は大丈夫そう。
  • 値をコピーするときは Set() を使うようマニュアルに書かれている。

To "copy" a Rat value, an existing (or newly allocated) Rat must be set to a new value using the Rat.Set method; shallow copies of Rats are not supported and may lead to errors.

[windows][dev] Visual Studioでエディタのフォントサイズの拡大率を変更する

Visual Studio 2019を使っている。

VSのエディタのフォントサイズがいつの間にか小さくなっていることがたまにあって困っていたが、エディタの左下に拡大縮小用のプルダウンメニューがあることにやっと気づけた。Ctrlキーを押しながらのマウスホイール操作で拡大率を変更できることも知った。

変更用メニュー

2010年の記事だが@ITでこの機能が紹介されていた。