24#include "AstUtil/Unit.hpp"
49AST_UTIL_API Quantity
aQuantityAdd(
const Quantity& q1,
const Quantity& q2);
55AST_UTIL_API Quantity
aQuantitySub(
const Quantity& q1,
const Quantity& q2);
62AST_UTIL_API Quantity
aQuantityMul(
const Quantity& q1,
const Quantity& q2);
69AST_UTIL_API Quantity
aQuantityMul(
const Quantity& q,
const Unit& unit);
76AST_UTIL_API Quantity
aQuantityDiv(
const Quantity& q1,
const Quantity& q2);
83AST_UTIL_API Quantity
aQuantityDiv(
const Quantity& q,
const Unit& unit);
96A_ALWAYS_INLINE std::string aFormatQuantity(
const Quantity& q)
105AST_UTIL_API Quantity operator*(
double value,
const Unit& unit);
120 return Quantity(std::numeric_limits<double>::quiet_NaN(), Unit::NaN());
138 return Quantity(value, Unit::None());
143 : magnitude_(0.0), unit_{}
149 : magnitude_(magnitude), unit_(unit)
155 : magnitude_(magnitude), unit_(
Unit::None())
196 void changeUnit(
const Unit& unit);
209 void setValueSI(
double value) { magnitude_ = unit_.fromSI(value); }
229 bool isValid()
const {
return unit_.isValid(); }
240 bool operator !=(
const Quantity& q)
const{
return !(*
this == q);}
245 bool operator == (
double value)
const{
246 return this->dimension() == EDimension::eUnit && this->getValueSI() == value;
252 bool operator != (
double value)
const{
253 return !(*
this == value);
306inline void Quantity::changeUnit(
const Unit &unit)
308 magnitude_ = unit_.
convertTo(magnitude_, unit);
317inline Quantity operator/(
double value,
const Quantity& q)
319 return value * q.invert();
Quantity & operator*=(const Quantity &q)
数量值乘法赋值
定义 Quantity.hpp:295
Quantity operator/(double scale) const
数量值除法
定义 Quantity.hpp:267
Quantity & operator*=(const Unit &unit)
数量值单位乘法赋值
定义 Quantity.hpp:277
Quantity & operator/=(const Quantity &q)
数量值除法赋值
定义 Quantity.hpp:297
Quantity operator*(const Unit &unit) const
数量值单位乘法
定义 Quantity.hpp:273
Quantity & operator-=(const Quantity &q)
数量值减法赋值
定义 Quantity.hpp:293
Quantity & operator+=(const Quantity &q)
数量值加法赋值
定义 Quantity.hpp:291
Quantity operator-() const
数量值取负
定义 Quantity.hpp:262
void setValueSI(double value)
设置国际单位表示的值
定义 Quantity.hpp:209
void setValueUnit(double value, const Unit &unit)
设置数值大小和单位
定义 Quantity.hpp:225
Quantity & operator*=(double scale)
数量值缩放赋值
定义 Quantity.hpp:269
static Quantity Zero()
零数量值
定义 Quantity.hpp:124
double getValueInUnit(const Unit &unit) const
获取指定单位下的值
定义 Quantity.hpp:214
double getValueSI() const
获取国际单位表示的值
定义 Quantity.hpp:204
Quantity operator/(const Quantity &q) const
数量值除法
定义 Quantity.hpp:289
Quantity operator+(const Quantity &q) const
数量值加法
定义 Quantity.hpp:283
void setUnit(const Unit &unit)
设置单位
定义 Quantity.hpp:190
const Unit & getUnit() const
获取单位
定义 Quantity.hpp:184
static Quantity Scalar(double value)
标量数量值
定义 Quantity.hpp:136
double & magnitude()
获取可修改的数值大小
定义 Quantity.hpp:164
Quantity & operator/=(double scale)
数量值除法赋值
定义 Quantity.hpp:271
Quantity operator*(double scale) const
数量值缩放
定义 Quantity.hpp:265
Quantity(double magnitude)
构造函数
定义 Quantity.hpp:154
Quantity operator+() const
数量值取正
定义 Quantity.hpp:260
static Quantity One()
单位数量值
定义 Quantity.hpp:130
EDimension dimension() const
获取量纲
定义 Quantity.hpp:200
bool isValid() const
检查数量值是否有效
定义 Quantity.hpp:229
Quantity & operator/=(const Unit &unit)
数量值单位除法赋值
定义 Quantity.hpp:279
void setMagnitude(double value)
设置数值大小
定义 Quantity.hpp:172
Quantity(double magnitude, const Unit &unit)
构造函数
定义 Quantity.hpp:148
Quantity invert() const
数量值取倒数
定义 Quantity.hpp:257
Quantity operator-(const Quantity &q) const
数量值减法
定义 Quantity.hpp:285
void setValueInUnit(double value, const Unit &unit)
设置指定单位下的值
定义 Quantity.hpp:220
std::string toString() const
数量值转换为字符串
定义 Quantity.hpp:300
double getMagnitude() const
获取数值大小
定义 Quantity.hpp:168
const Unit & unit() const
获取单位
定义 Quantity.hpp:176
static Quantity NaN()
无效数量值
定义 Quantity.hpp:117
double magnitude() const
获取数值大小
定义 Quantity.hpp:160
Quantity operator*(const Quantity &q) const
数量值乘法
定义 Quantity.hpp:287
Unit & unit()
获取可修改的单位
定义 Quantity.hpp:180
Quantity operator/(const Unit &unit) const
数量值单位除法
定义 Quantity.hpp:275
double convertTo(double value, const Unit &unit) const
转换为指定单位下的值
定义 Unit.hpp:424
Quantity aQuantityAdd(const Quantity &q1, const Quantity &q2)
数量值加法
定义 Quantity.cpp:34
std::string aQuantityToString(const Quantity &q)
数量值转换为字符串
定义 Quantity.cpp:89
Quantity aQuantityMul(const Quantity &q1, const Quantity &q2)
数量值乘法
定义 Quantity.cpp:59
void aQuantityReduce(Quantity &q)
数量值简化
定义 Quantity.cpp:27
Quantity aQuantitySub(const Quantity &q1, const Quantity &q2)
数量值减法
定义 Quantity.cpp:54
Quantity aQuantityDiv(const Quantity &q1, const Quantity &q2)
数量值除法
定义 Quantity.cpp:73
EDimension
量纲枚举类
定义 Dimension.hpp:293