繁体   English   中英

如何将 std::ratio 用于大于 int64_t 的值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM