当前位置:  开发笔记 > 编程语言 > 正文

高于指定值的最小可表示值

如何解决《高于指定值的最小可表示值》经验,为你挑选了1个好方法。

给定一个变量定义为

T x;

其中T是一个通用的算术类型(即,使得std::is_arithmetic::value),有一个简单的表达式(例如,从某事std::numeric_limits),用于评估到最低值y表达中T,使得y> x

(即一种广义增量。。)



1> Kaenbyou Rin..:

您可以使用std::nextafter

请注意,在这里我使用std::numeric_limits::max(),如果您想要有意义的行为以表示无限性,则可能需要修改代码。

#include 
#include 
#include 
#include 
#include 

template  && !std::is_integral_v, bool> = false>
Floating generic_next_val(Floating val) {
    return std::nextafter(val, std::numeric_limits::max());
}

template  && std::is_integral_v, int> = 0>
Integral generic_next_val(Integral val) {
    return static_cast(val + static_cast(1));
}

int main() {
    int a = 1;
    float f = 0.0f;
    std::cout << std::setprecision(20) << generic_next_val(f) << " " << generic_next_val(a) << std::endl;
    return 0;
}

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有