gpt4 book ai didi

c++ - 计算一个点号的校验和

转载 作者:太空狗 更新时间:2023-10-29 21:39:31 24 4
gpt4 key购买 nike

我正在尝试创建一个能够计算任何数字(包括 float )的校验和的函数。

例如:

360° = 3+6+0 = 9
180° = 1+8+0 = 9
90° = 9+0 = 9
45° = 4+5 = 9
22.5° = 2+2+5 = 9
11.25° = 1+1+2+5 = 9
5.625° = 5+6+2+5 = 18 = 1+8 = 9
2.8125° = 2+8+1+2+5 = 18 = 1+8 = 9
1.40625 = 1+4+0+6+2+5 = 18 = 1+8 = 9
0.703125 = 0+7+0+3+1+2+5 = 18 = 1+8 = 9
0.3515625 = 0+3+5+1+5+6+2+5 = 27 = 2+7 = 9
0.17578125 = 0+1+7+5+7+8+1+2+5 = 36 = 3+6 = 9
...

我写了这段小代码,它计算一个整数的校验和:

#include<iostream>
using namespace std;

int checksum(int param)
{
int sum = 0;

while (param > 0)
{
sum += param % 10;
param /= 10;
}

while (sum > 9) { sum = checksum(sum); }

return sum;
}

int main()
{
int number = 0;

cout<<"Enter number:"<<endl;
cin>> number;

cout<< checksum(number);

cin.get(); cin.get();
return 0;
}

我如何改进它,使其也适用于 float ?

背景

我试图查明我的示例中的模式是否真的会永远持续下去,结果 9 作为校验和。

更新

不幸的是,C++ 对于这个项目来说不够精确。例如。如果我计算 0.703125/2,则结果将为 0.3515625,但在 C++ 中,结果为 0.351563。我的代码:http://www.pasteall.org/61345/cpp

最佳答案

假设您想计算 float 小数点后 5 位的校验和,然后只需将您的 float 乘以 100000 并取“floor”,然后使用您的函数计算校验和。

编辑

由于 float 和 double 存在进动问题,因此最好不要使用它们来计算更多位(double 为 15 位)的校验和。对于更多数字,请使用 float 的字符串表示。

关于c++ - 计算一个点号的校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32789733/

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