異なる言語の問題の精度と範囲
精度数値の桁数、浮動小数点表現制限コンピュータは、任意の精度で格納することはできませんされ
、特に小さな又は大きな数字は、いくつかの予期しない動作にしばしば、
ときに大規模なデータ、データ量を大きなデータ量にいくらかの計算は小さなデータの量、およびデータ演算誤差の大量の場合には、発生したときに正常な結果をもたらす可能性があります。
説明
データを計算するためにコンピュータを使用する場合は、レンジデータの精度とデータはこの問題は非常に微妙であることに留意しなければならない、ここでまとめ、
コンピュータがバイナリです。フロートは正確にバイナリで表現する方法はありません。我々のCPU浮動小数点表現は、2つの部分から構成:仮数と指数、
そのような表現は、一般に、いくつかの浮動小数点演算は、いくつかのエラーを有するであろういくつかの精度を失うことになる、コンピュータとの無限の精度の実数の限られたメモリであります間の衝突
共通言語IEEE 754浮動小数点数は、2進浮動小数点演算のIEEE標準(IEEE標準浮動小数点演算のためである )
異常値(非正規化数)と(負のゼロを含む-0)浮動小数点数のフォーマット、いくつかの特別な値(無限大(INF)および非数値(NaNで))
常識として、Javaまたは他の言語のいずれかで、我々はすべて知っているべきである:
0.1 + 0.2が0.3に必ずしも等しくありません。
1/3 * 3必ずしも1に等しくありません。
LOG2 + 1に等しく書かれていないlog5。
このように常識を入れて、精度の小さな損失は効果がないようだ-と異なる言語で入力することができ、その後、結果を表示
C言語
精度C言語
のダブルは
精度が再びアップグレードを達成するために、独自のアルゴリズムを設計することができます-この後にそれについて話します
Java / Scalaの
BigDecimalクラスは、のBigInt計算する
BigDecimalを、16の以上の正確な計算のために使用される有効ビット数
16パーセンタイル値通貨を超えBigDecimalの有効数字、及び一般的な形式数値制御。
ほとんどのビジネスコンピューティングでは、一般的なクラスjava.math.BigDecimalの正確な計算。
Java言語
の数学及びコンピュータ計算が異なる
数学的操作:1/3
コンピュ:1 / 3.toDouble
:. 1 / 3.0計算の
Math.floor()はより大きくない最大の整数を返す
)(恐らくMath.round - 「丸め」を表す丸い方法、
アルゴリズムMath.floor(x + 0.5)は、約0.5およびその後切り捨てる元のデジタルを追加し、
従って、恐らくMath.round(11.5)12であり、恐らくMath.round結果(-11.5)-11をもたらします。
Math.ceilはより小さくない最小の整数である
Scalaの言語
データ型
scala.math.BigInt
scala.math.BigDecimal
//小数点以下
ヴァルA = 3.1415926
valはB =( "%.. 2F")a.formatted
、例えば:
最大値算出
選択()は、問題が発生する(200160)を選択超える
(:INT、K:N-INT):選択DEF =のInt {
。IF(K == == 0 || N-K)1
。他(選択N-- 1、K - 1)N-(+選択1、K)
}
次のデータが範囲のInt ---修正方法のうち、格納されるように、戻り値をダブルに設定されています
パイソン
Pythonのデフォルトは17 ビット精度、すなわち小数点16 ビット
一般的な場合、丸めおよび使用制御をフォーマット
数学モジュールCEILは、(X ) 以上かかりX 最小の整数。
数学モジュールフロア(X ) -
から 数学 インポート CEIL 、 床
CEIL (2.5 )
使用して高精度に小数でモジュールを、にgetcontext
R言語
R千万よりも多くの言語データは、データ型変換intに注意を払う- numri
でダブルデータ型
の最大値と最小値316-1E
* 3 1/3 R言語NA 1である(使用できない)
R言語は無限表示されます(INF )および非数値(NaNで)、その理由は、数値と見なされていない場合
、デフォルトの倍精度データ型(倍精度)
)(フロア:切り捨て;
天井():切り上げ;
ラウンド()に丸めインテグリン;
turnc():配向整数0;
signif-():位置決め精度のために予約番号。
数値の文字と数値の違いに注意してください
numeircの
文字を
SQL言語
場合値処理機能、MySQLは非常に正確な結果を与えることができ、無効な値の高さを制御することができる
明確に定義された丸みを帯びた特徴:正確な結果の値を、ROUND()は、数量に依存
変換(小数(8,6 )、(63883.63 / 23625))
時間の数値ソートを使用して、定義のデータ型を確認してください、文字列が数値として表示されますが、別の種類
の文字、数値に差値と注意
このとそこExcelと同様に中国の存在NUMERICAL NUMERICALデジタル、Excelの数式データ。
オリジナル:大列の 異なる言語の精度と範囲