1桁に四捨五入された数値は、依然として多くの桁でExcelに書き込まれます。例えばバリアントの丸め
:
dim myvar as variant
dim mysingle as single
dim myrange as range
mysingle = 4567.23494376
myvar = round(mysingle,1)
myrange = "A1"
myrange.value = myvar
私はmyvar
を書いているにもかかわらず、細胞は4567.2を表示するものの、セルをクリックすると、すべての桁で全体の値を示し、A1のセルに1桁に丸められてきました数式バーの仮数の右側に移動します。
この現象が起こるはずですか?
はい、いいえ..それは依存https://support.microsoft.com/en-us/help/214118/how-to-correct-rounding-errors-in-floating-point-arithmetic – Slai
このコードは構文的に間違っています。 'myrange =' 'Range''として' myrange = "A1" 'は動作しません。そして、 'Excel'は浮動小数点を' Double'精度で使うので、 'Excel'のためにVBAで' Single'を使うべきではありません。 –
はい。 Single '4567.2'をDouble(キャレットがExcelをどのように使用するか)にキャストすると、その値は '4567.2001953125'になります。これはセル内に表示されます。 'Debug.Print myvar、CDbl(myvar)' –