2

私はまだ Vim の数字に問題があります:

let a = 1.02 | let b = '10000000' | let total = a*b | echo total --> 1.02e7  

指数関数は避けたいです。出力 10200000 を取得するにはどうすればよいですか?

let a = 4000000000 | let b = '1' | let total = a+b | echo total  --> -294967295 

なぜこれは間違った出力を与えるのですか?

TNX

4

3 に答える 3

2

オーバーフローは簡単に見られます

:let a = 4000000000 | echo a --> -294967296
于 2012-04-26T09:53:35.683 に答える
2
:echo printf("%.0f", 4000000000.0 + 1.0)

注意点:

  • 算術を行うために string->int 変換を使用していますが、これは通常は良いことではありません。
  • int はマシン ワード サイズであるため、特に 32 ビット マシンでは、大きな数値はオーバーフローします。
  • 通常は %g を使用して浮動小数点数をフォーマットします。精度を制御したい場合は、printf を使用します。
  • 大きな数を扱う場合は float を使用しますが、正確な精度を期待する場合はあまり良くありません。
于 2012-04-26T09:46:52.477 に答える
1

使用printf

let a = 1.02 | let b = '10000000' | let total = a*b | echo printf( "%.f", total)

出力:

10200000
于 2012-04-26T09:43:51.947 に答える