質問

単に好奇心!私はSASが保持しているπの値が実際に間違っていることを発見します。

たとえばます:

data _null_;
x= constant('pi') * 1000000000000000000000000000;
put x= 32.;
run;

は、πの値を与える(3)141592653589792961327005696

しかしながら - πはもちろんである(3)1415926535897932384626433832795( http://www.joyofpi.com /pi.htmlする) - 31 DPに

与えるもの?? !!

役に立ちましたか?

解決

14の小数点以下の定数としてSAS店のPIを。あなたは乗算ステップをしたとき、あなたが見ているの違いは、浮動小数点演算のアーティファクトである。

data _null_;
    pi=constant("PI");
    put pi= 32.30;
run;

/ *ログオン* /

pi=3.141592653589790000000000000000

他のヒント

PIが設定された精度にすべてのプログラミング言語で一定として保持されます。それは計算されません。あなたのコードはちょうどPIはSASでどのように正確に公開します。

あなたは精度の16桁の数字を得ました。これはこれ、それはおそらくhref="http://en.wikipedia.org/wiki/Floating_point#IEEE_754:_floating_point_in_modern_computers" rel="nofollow noreferrer"> IEEE 754倍精度浮動小数点表現する

ギャリーShutlerが言ったように、

、それが定数として開催されています。彼らはすぐに操作することができる非常に良い近似値として保存されているので、コンピュータ言語の数値型でその小さな小数値は、めったに正確な(実際には、その精度はその精度よりも低くすることができる)が全てではないことに注意してください。あなたは(金融・科学的な努力のように)優れた精度が必要な場合は、(計算速度を犠牲にして)完全に正確で扱うJavaのBigDecimalなどの特殊なタイプを使用する必要があります。 (申し訳ありませんが、SASはそうBigDecimal用のアナログ知らない知らない。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top