gpt4 book ai didi

c++ - 高于给定值的最小可表达值

转载 作者:行者123 更新时间:2023-12-02 06:19:29 25 4
gpt4 key购买 nike

给定一个定义为

的变量

T x;

哪里T是通用算术类型(即 std::is_arithmetic<T>::value ),是否有一个简单的表达式(例如 std::numeric_limits 中的某些内容)计算出最小值 y可表达为T这样y > x

(即一种广义增量..)

最佳答案

您可以使用 std::nextafter .

请注意,这里我使用 std::numeric_limits<Floating>::max() ,如果您想要无穷大的有意义的行为,您可能需要修改代码。

#include <iostream>
#include <limits>
#include <cmath>
#include <type_traits>
#include <iomanip>

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

template <typename Integral,
std::enable_if_t<std::is_arithmetic_v<Integral> && std::is_integral_v<Integral>, int> = 0>
Integral generic_next_val(Integral val) {
return static_cast<Integral>(val + static_cast<Integral>(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;
}

关于c++ - 高于给定值的最小可表达值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58946469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com