(オーバーフローを避けるために)乗算によって返される精度を倍にする方法はありますか?C++テンプレートタイプTを「long T」に変更しますか?
template<class T> class MyClass {
T multiply (T a, T b) { return a * b; }
}
ような何か:
long T multiply (T a, T b) { return a * b; }
'int型' か、 '長い'、または 'ダブル' が与えられたようにするため、 'long int型'、 '長い長い'、または「long double型'は掛け算から返されます。
これは一般的な質問です。私は内部的にダブルを使用してその周りに取り組んでいます。しかし、私の質問は、C++の "long"バリアントに型を昇格させるメカニズムがあるかどうかです。
それはあなたがオーバーフローを避けたい場合は、ちょうどあなたの 'T'と '長いlong'を使用することがおそらく良いでしょう。 – Pubby
'long'は型名に適用できる修飾子ではありません。 'long int'は、2つのキーワードlongとintで綴られた、分かれない型名です。 –
なぜ「長いT」を使いたいのか分かりません。 Tはテンプレートパラメータであり、long * operatorがオーバーライドされているため、オブジェクトのプリミティブ型またはインスタンスになります。場合によっては、Tを長くキャストできます。 – user1929959