問題タブ [long-double]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
57 参照

c++ - double を使用して同じ出力を生成する 2 つのプログラムがある場合、両方のプログラムが同一であると仮定できますか?

私は C++ プログラムを書いていますが、バグを修正するために、メイン プログラムのセクションを別のファイルに分離しました。メイン プログラムをProg1と呼び、別のセクションをProg2と呼びます。

Prog2 のバグを見つけて修正することに成功し、変更を Prog1 にコピーしました。すべてを実行すると、2 つのプログラムは同じ結果IFFを出力します。両方のプログラムで使用している唯一のデータ型は typedoubleです。

精度を上げるためにすべての double を に変更したいと思ってlong doubleいましたが、そうすると、Prog1 の出力は Prog2 とは少し異なります。

私の考えでは、Prog1 では long double を使用する特定の計算が行われるのに対し、Prog2 ではリテラルのみを使用することがあるため、これはプロモーションの問題であると考えています。例えば:

プログラム 1:

プログラム 2:

value1との結果value2が正確に等しくならない場合 (参照:浮動小数点演算は壊れていますか? )。

これで、両方のプログラムのすべてのリテラルをタイプlong double(例: 1.0L) に変更して、出力が一致するかどうかを確認できますが、残念ながら、それは言うよりも簡単です (多くのがあります)。

だから私の質問は:

double を使用すると 2 つのプログラムの出力が正確に一致するため、Prog2 が正しく機能している場合、Prog1 が正しく機能していると想定しても安全ですか? long double を使用すると結果は異なりますが?

0 投票する
3 に答える
1050 参照

python - Python: float80 値の読み取り

10 バイト (80 ビット) のリトル エンディアン float 値 (またはfloat80) の配列があります。Python 3でこの値を読み取るにはどうすればよいですか?

パッケージstructはサポートしていませんfloat80(不注意にドキュメントを読んでいる可能性があります)。

パッケージarray"struct" と同じパッケージは をサポートしていませんfloat80

パッケージは、またはタイプnumpyをサポートします。とても良いのですが、の末尾に追加して拡張したり、醜いです。このパッケージのインポートには多くの時間がかかります。float128float96\x00float80float96float128

パッケージctypesc_longdouble. それはnumpyよりも何倍も高速sizeof(c_longdouble)ですが、マシンに依存し、80ビット未満になる可能性があり、\x00末尾に追加しfloat80て拡張するのc_longdoubleも醜いです。

更新 1 : 私のgist.githubでコードをテストします。機能decode_str64は醜いですが、機能します。今、私は正しい方法を探しています

0 投票する
1 に答える
862 参照

c++ - C++ fabs(long double) コンパイラの警告

の絶対値が欲しいlong double

<cmath>またはによると<math.h>、以下が利用可能です。

ただし、実行するlong double ld = fabs(static_cast<long double>(0));と、次の警告が表示されます (LLVM 7.1):

Absolute value function 'fabs' given an argument of type 'long double' but has parameter of type 'double' which may cause truncation of value

どうして?

a の絶対値を取得する他の方法はありますlong doubleか?

編集:

std::abs最終的に仕事をしました。しかし、std::fabsしませんでした。コメントで指摘されたように、これは非準拠の実装が原因である可能性があります。

0 投票する
0 に答える
54 参照

c - C - long double の最小値と最大値

long double の最小値と最大値は double のようなものですか? それらは互いに 8 バイトを使用し、最大で約 E308 (10^308) になります。long double は 16 バイトを使用し、>E4000 に到達する必要がありますね。それともコンピュータに依存しますか?これらの値は、マクロ LDBL_MAX と sizeof キーワード (バイト占有用) を使用してチェックします。それは正常ですか、それともいくつかのエラーを犯しましたか (フォーマット指定子のように - %Le を使用して印刷します)? ああ、Visual Studio 2015 を使用してコンパイルおよび実行しました。ありがとうございました!

0 投票する
3 に答える
2501 参照

c - C で LDBL_MAX/MIN を定義する

私は C で作業しています。 と の値を出力する必要がある演習を行う必要がlong double minありlong double maxます。

ヘッダーとして使用float.hしましたが、これら 2 つのマクロ ( LDBL_MIN/MAX) は、単なる double であるかのように同じ値を返します。

LDBL MINVisual Studio 2015 を使用しています。マウスをその上に置くと、#define LDBL_MIN DBL_MIN. dbl_minそれが代わりに印刷される理由ldbl_minですか?

この問題を解決するにはどうすればよいですか?

私の割り当てには と に 2 つの異なる値が必要なため、これは問題LDBLですDBL

0 投票する
2 に答える
110 参照

c++ - C++ でユーザー入力に long double リテラル サフィックスを追加する

long double ベクトルを持つクラスがあります。

入力演算子をオーバーロードし、ユーザーから入力を取得してからベクターにプッシュしました。私が抱えている問題は、ユーザーが double の範囲外の数値を入力した場合、コードは、ユーザーが持っていなくても、入力に長い double 接尾辞を追加する必要があることです。これは私がこれまでに試したことです:

scanf を使用することを考えましたが、入力演算子をオーバーロードするときに安全に使用できるかどうかはわかりません。

0 投票する
2 に答える
3652 参照

c++ - C++ の非常に小さい浮動小数点数、精度

10^-15 から 10^-25 の非常に少数のオーダーを使用するコードを扱っています。doubleandを使ってみたのですlong doubleが、0.000000000000000000001が四捨五入され0たり、 のような数字0.000000000000000020.00000000000000001999999999999

1/1000000 のわずかな部分でも、最終的な回答に大きな違いが生じるため、適切な修正はありますか?

予想される出力は次のようになります。

しかし、私が得る出力は次のとおりです。

doublelong doubleさらにを試しboost_dec_floatましたが、得られる出力は似ています。