问题标签 [boost-units]

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 投票
1 回答
108 浏览

c++ - 双向转换是设计使然还是错误?

代码打印4或打印0.666667取决于是否定义了第二个转换因子。这应该是设计使然吗?物理学中没有两个这样的单位需要不同的转换因子,是吗?

0 投票
3 回答
3037 浏览

c++ - 铸造 boost::units::quantity 加倍

我需要将数量的值传递给库进行评估。boost 单位库在 SI 中采用 double 值,因此boost 单位库在确保该要求方面非常有吸引力。但是,我应该如何将数量转换为双精度值?文档和示例似乎避免了这种情况,因为其目的是理所当然地维护这些单元。

就像是:

浏览标题建议...这是转换为基本类型的正确方法吗?

0 投票
1 回答
1334 浏览

c++ - 将 printf 与 boost::units::quantity 值一起使用

boost::units 库提供了一种将数量值写入流的好方法,请参见示例

我可以将 printf 与数量值一起使用而不是使用输出流吗?我有相当多的代码使用 printf 很好地格式化了输出,我想保留格式。将数量传递给say

抛出警告

警告:格式“%e”需要“double”类型的参数,但参数 2 的类型为“boost::units::quantity<boost::units::unit<boost::units::list<boost::units: :dim<boost::units::length_base_dimension, boost::units::static_rational<-0x00000000000000003l> >, boost::units::list<boost::units::dim<boost::units::mass_base_dimension, boost: :units::static_rational<1l> >, boost::units::dimensionless_type> >, boost::units::homogeneous_system<boost::units::list<boost::units::si::meter_base_unit, boost:: units::list<boost::units::scaled_base_unit<boost::units::cgs::gram_base_unit, boost::units::scale<10l, boost::units::static_rational<3l> >>, boost:: units::list<boost::units::si::second_base_unit, boost::units::list<boost::units::si::ampere_base_unit, boost::units::列表<boost::units::si::kelvin_base_unit, boost::units::list<boost::units::si::mole_base_unit, boost::units::list<boost::units::si::candela_base_unit , boost::units::list<boost::units::angle::radian_base_unit, boost::units::list<boost::units::angle::steradian_base_unit, boost::units::dimensionless_type> > > > > > > > > > > >' [-Wformat]

我可以改用 rho.value() ,但如果可能的话,我想输出单位(即使我已经更新了格式字符串)。

我认为答案在这里,http://www.boost.org/doc/libs/1_52_0/doc/html/boost_units/Reference.html#header.boost.units.io_hpp

0 投票
0 回答
296 浏览

c++ - Eclipse CDT 无法解析类型 boost::units::derived_dimension

我在下面的标题中定义了一个新的derived_dimension 类型specific_entropy_dimension 和一个单位specific_entropy。这编译得很好,没有使用 g++ 的警告,但是,Eclipse CDT 的索引器无法解析类型并出现错误:

类型 'derived_dimension< length_base_dimension, 2, time_base_dimension, -2, temperature_base_dimension, -1 >::type' 无法解析

它是我代码中唯一的错误,我想解决这个问题,以便获得“干净”的分析。我需要做什么才能让 CDT 解决这种类型?

单位.h

请注意,我的标题包含更多派生维度,但这说明了问题。

0 投票
3 回答
3269 浏览

c++ - 升压中的毫米::单位

我想将 boost::units 用于某些 SI 指标。但是我们的代码主要处理毫米而不是使用

我们更喜欢类似的东西

但是我不确定如何定义“毫米”(不使用#define)。

其次,使用前缀单位的开销是多少?

更新:这需要在没有 C++11 特性的情况下运行(即没有 UDL)

0 投票
2 回答
512 浏览

boost - 仅将 boost::units 添加到 C++ 项目

我有一个开源热力学属性库,它全部用 C++ 编码,我终于对处理单位感到沮丧。因此,我想添加boost::units到我的核心代码中,以便使用boost::units零(?)计算开销来完成所有单元处理。

但是我需要我的代码来运行跨平台/交叉编译器(Boost 可以做到这一点),并且理想情况下不需要下载所有 Boost,因为它不完全是一个小包。

我想知道:

是否可以只包含 Boost 的一小部分?甚至不下载 Boost 的其他部分?我知道如果不包含其他 Boost 模块,它们将不会包含在构建中,但我什至不想下载其他模块。

此外,是否boost::units需要编译还是仅标题?

0 投票
1 回答
667 浏览

c++ - 使用 Boost.Units 和 Boost.Multiprecision

我正在尝试编写一个分子动力学程序,并且我认为 Boost.Units 是变量的逻辑选择,并且我还认为 Boost.Multiprecision 提供了比舍入误差更好的double选择long double。两者的结合似乎相当简单,直到我尝试使用一个常数,然后它就崩溃了。

输出将是1 M S^-1. 如果我使用long double代替mp::mpf_float_50,那么结果是2.87818e-11 m s^-1。我知道问题在于常量和其他数据之间的转换,因为常量默认为double. 我曾考虑过创建自己的玻尔兹曼常数,但如果可能,我更喜欢使用预定义的值。

因此,我的问题是,当我从 Boost.Units 中预定义常量时,如何使用 Boost.Multiprecision?如果我必须承认使用doubleor long double,那么我会,但我怀疑存在一种方法可以在常量上转换或利用另一个。

我正在使用 Mac OS X 10.7、Xcode 4.6.2、Clang 3.2、Boost 1.53.0 和 C++11 扩展。

我很感激可以提供的任何帮助。

0 投票
1 回答
212 浏览

c++ - Boost: rpm 的 typedef

我试图在我的代码中使用 boost::units 来定义 RoundsPerMinute 类型。但是我并不真正了解如何做到这一点。

我已经定义了一分钟

现在可以做例如

我现在想做的是类似的事情

但我不确定如何定义这些类型 - 坦率地说,整个 boost 文档对我来说太技术性了,我无法理解 :-( 如果有人可以帮助我定义这些类型,那就太好了。

0 投票
1 回答
546 浏览

c++ - 如何从 Boost Units 中的另一个派生维度定义派生维度?

在我的业务领域中,我的值表示为 W.m^-2.K^-1。

从“基本尺寸”的角度来看,这些值表示为 kg.s^-3.K^-1 (W = kg.m^2.s^-3)

如何使用 Boost Unit 实现这个维度和这个单元?

我发现的唯一示例,包括官方文档,是关于从基本维度派生维度,但我想从“权力”维度派生,这本身就是派生维度

另外,我不知道我是否必须从幂维度导出,或者我是否必须从基本维度导出我的维度设置我的维度单位,例如以 W.m^-2.K^-1 表示。我预见后者将更难以操作(鉴于我的“基础派生”尺寸约为千克和秒......)

谢谢。

0 投票
2 回答
1142 浏览

c++ - std::chrono & Boost.Units

我正在开发一个我想利用的软件设计Boost.Units。我想使用的一些单位代表时间,但是,我倾向于使用 C++11std::chrono单位,因为它们是标准的。

我想知道之间是否有任何干净的集成Boost.Unitschrono或者我是否必须求助于编写自己的转换器并通过仅在类型之间复制标量值来失去类型安全性。

这个问题有什么最佳实践吗?