gpt4 book ai didi

c++ - Arduino Pow() 和 Armstrong 数问题

转载 作者:行者123 更新时间:2023-11-28 08:34:57 24 4
gpt4 key购买 nike

这是我要运行的代码。我尝试了很多事情,比如我找到了一个使用 math.h 执行 ceil() 的解决方案,但我真的很想了解为什么即使我做了类似的事情,它也不起作用

pow((int)j, 3) + pow((int)d, 3) + pow((int)s, 3)

其中 j 为 3,d 为 5,s 为 1;如果我去哪里做

pow(3,3) + pow(5,3) + pow(1, 3)然后条件为真。

我知道 sum 是 double 类型,Serial.println(sum) 说 153.00 我想是 152.999999 类似的东西但是 int j = 3; 不同于将 3 放入 pow() 我检查了二进制数据,j 实际上是 0011 d 是 0101 s 是 0001Serial.println(j, BIN);

int n = 100;
float j, d, s;
double sum;
void setup() {
Serial.begin(9600);
}

void loop() {
delay(100);
if (n >= 100 && n < 154) {
j = n % 10; // 153 % 10 = 3;
d = n / 10 % 10; // 15 % 10 = 5;
s = n / 100; // 153 / 100 = 1;

sum = pow(j, 3) + pow (d, 3) + pow(s, 3);

if (sum == n) {
Serial.println(n);
}

n++;
}
}

如果我发现这里有错别字,我会更正自己,我只是把它打到这里,而不是复制粘贴:)

最佳答案

how does int j = 3; differ from just placing 3 into pow()

pow(int, int)pow(float, float) 是不同的函数。 pow(float, float)质量在这里显然很弱,只能接近数学上的正确答案。 C/C++ 没有指定此类函数所需的紧密度。

可以舍入 pow(float, float) 答案,或者简单地说,对于精确的数学问题,避免 float 学。


请记住,更好的结果实现可能是以牺牲时间性能为代价的。一分钱一分货。

关于c++ - Arduino Pow() 和 Armstrong 数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59402910/

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