muhtemelen formaNeden std :: oranı bir değer üyesine sahip değil?
static constexpr double value = num/den;
ben, oranının rasyonel değerini temsil edecek std::ratio
sadece num
ve den
değerleri ve bazı value
üyesini açığa neden arkasında muhakemesine merak ediyorum
- Onlar çift kilitlemek istedi (veya herhangi bir belirli) hassas
- Operati olmayabilirdi, çünkü bu olabilir hayal üzerinde Kötü bir gerektirebilir
- kullanıcı kodu gerçekleştirmek için önemsiz (güvensiz?)
döküm ama standardında bir tek değer üyesi olmaması için diğer iyi nedenler varsa merak ediyorum?
ASSIDE: sanırım kendisi için ben üzerinde çalıştığım bir strongly-typed unit library için std::ratio
daha güçlü yazılmış versiyonları, uygulamak için arıyorum çünkü benim için pratik bir uygulama var,
aşağıdaki gibi bir şey iade edilen aynı şey değildir açıkçası, bu durumda
template<typename UnitType, std::intmax_t Num, std::intmax_t Denom = 1>
struct unit_ratio : private std::ratio<Num, Denom>
{
static const UnitType value() { return UnitType((double)num/den);
};
(I std::ratio
ve const-lık hakkında bazı anlayış kaçıramam varsayarak) kullanıcı kodu num/den
gerçekleştiren mantıklıdır num/den
değerini içeren bir UnitType
, ama std::ratio
benzer bir şey yapmaz beri ben bu biraz kötü bir fikir.
Kayan nokta sayısı aslında rasyonu temsil etmeyebilir değil mi? – NathanOliver
@NathanOliver bana öyle görünüyor ki, bu çiftin de temsil ettiği gibi, çifte val = (çifte) myRatio :: num/myRatio :: den' ki çoğu insanın kendi kodlarında ne yapacağıdır. Şablonların, non-integral olmayan tip olmayan üyeleri alabileceği gerçeğini ortadan kaldırmak için genellikle 'ratio' kullanırım. –
Bir çifte gerçekte bir * rasyonel * değeri değil, bir * gerçek * değerinin bir yakınlaştırmasıdır. Rasyonel sayılar tam sayılı oranlardır. – Galik