std::ratio
std::ratio是一個(gè)模板類,用于表示有理數(shù)的比率。其定義為:

其中,Numerator表示有理數(shù)的分子,Denominator表示有理數(shù)的分母,默認(rèn)為1。
std::ratio提供了在編譯時(shí)計(jì)算的有理數(shù)操作,可以進(jìn)行加法、減法、乘法、除法、比較等運(yùn)算。這些運(yùn)算是類型的運(yùn)算,得到的結(jié)果也是類型。對(duì)于比較運(yùn)算類型,可以用成員value獲取比較的結(jié)果的布爾值。
Case?:

std::ratio的成員num和den分別表示有理數(shù)的分子和分母。
作用
I. std::ratio可以用于單位轉(zhuǎn)換。通過(guò)將數(shù)值與適當(dāng)?shù)挠欣頂?shù)比率相乘或相除,可以實(shí)現(xiàn)不同單位之間的轉(zhuǎn)換。例如,將米轉(zhuǎn)換為英尺或?qū)⒚朕D(zhuǎn)換為毫秒等。
II.?有時(shí)候需要在計(jì)算中使用固定精度的數(shù)值,例如在金融計(jì)算或物理模擬中。使用std::ratio可以定義分?jǐn)?shù)形式的固定精度數(shù)值,以避免浮點(diǎn)數(shù)精度問(wèn)題。
III.?在編譯時(shí),使用std::ratio對(duì)有理數(shù)進(jìn)行運(yùn)算和比較的操作,可以提高程序的性能和效率。相比于在運(yùn)行時(shí)進(jìn)行計(jì)算,編譯時(shí)計(jì)算可以在編譯期間進(jìn)行優(yōu)化,消除冗余的計(jì)算和運(yùn)行時(shí)的開(kāi)銷。這在需要進(jìn)行頻繁計(jì)算或執(zhí)行常量表達(dá)式計(jì)算的情況下很有用。