![](/img/trans.png)
[英]Copy constructor works faster on copying std::vector<int64_t> than std::copy
[英]How to use std::ratio for values larger than int64_t?
我想将太阳质量编码为 std::ratio (以便将其转换为 kg)。 如果太阳质量是 1.988478e+30 kg,我怎么能做这样的事情?
std::ratio<(unsigned long long)1'988'478e+30, 1> kg_to_solar_mass // overflow
64 位无符号 integer (典型机器用于unsigned long long
)的最大值为 18446744073709551615 (1.8446744073709551615e+19)。 这比 1'988'478e+39 (甚至1.989e+30 )小几个数量级,并且会溢出 integer。
您要么必须切换到使用双精度或某些“Big Int”库的不同类型,要么不指定一公斤与太阳质量的比率。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.