gpt4 book ai didi

c++ - 如何从 std::decimal 中获取系数?

转载 作者:搜寻专家 更新时间:2023-10-31 02:22:48 24 4
gpt4 key购买 nike

背景

我想编写一个 is_even( decimal::decimal64 d ) 函数,如果最低有效数字为偶数,则返回 true。

不幸的是,我似乎找不到任何方法从 decimal64 中提取系数

代码

#include <iostream>
#include <decimal/decimal>

using namespace std;

static bool is_even( decimal::decimal64 d )
{
return true; // fix this - want to: return coefficient(d)%2==0;
}
int main()
{
auto d1 = decimal::make_decimal64( 60817ull, -4 ); // not even
auto d2 = decimal::make_decimal64( 60816ull, -4 ); // is even

cout << decimal64_to_float( d1 ) << " " << is_even( d1 ) << endl;
cout << decimal64_to_float( d2 ) << " " << is_even( d2 ) << endl;

return 0;
}

最佳答案

奇怪的是没有提供恢复小数系数的函数;但你可以乘以 10 的负指数:

bool is_even(decimal::decimal64 d)
{
auto q = quantexpd64(d);
auto coeff = static_cast<long long>(d * decimal::make_decimal64(1, -q));
return coeff % 2 == 0;
}

assert(!is_even(decimal::make_decimal64(60817ull, -4)));
assert(!is_even(decimal::make_decimal64(60816ull, -4)));

关于c++ - 如何从 std::decimal 中获取系数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29947145/

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