创建具有特定精度的新 cpp_dec_float 类型

create new cpp_dec_float types with specific precision

我正在 运行 使用 C++ 进行物理模拟,为了获得精确的结果,我正在使用 boost::multiprecision。 到目前为止,我使用的是 cpp_dec_float_50 类型,但是,现在我需要测试具有不同精度的不同变量的模拟。

那么,如何创建新类型,例如 cpp_dec_float_27(27 位精度)?

我尝试更改模板代码:

namespace boost{ namespace multiprecision{
template <unsigned Digits10, class ExponentType = boost::int32_t, class Allocator = void>
class cpp_dec_float;
typedef number<cpp_dec_float<50> > cpp_dec_float_50;
typedef number<cpp_dec_float<100> > cpp_dec_float_100;
}} // namespaces

但是我遇到了很多问题。

如果我理解正确的话,您正在尝试更改您的升压安装,您永远不应该这样做,因为其余的升压源可能依赖于它。

如果您想定义自己的精度,您需要一个简单的 typedef:

typedef number<cpp_dec_float<27> > cpp_dec_float27;

准备就绪。

但是,如果您的函数依赖于类型 cpp_dec_float100,您可能需要考虑使用这些函数的模板来接受多精度。