gpt4 book ai didi

c - 将函数舍入 1 - C

转载 作者:行者123 更新时间:2023-11-30 20:03:37 24 4
gpt4 key购买 nike

char note_array[] = "G#5";

int approx_freq = 880;

int result = 0;
if(note_array[1] == '#')
approx_freq = round(approx_freq * pow(2, 1.0/12));
switch(note_array[0])
{
case 'A': result = approx_freq;
break;
case 'B': result = round(approx_freq * pow(2, 2.0/12));
break;
case 'C': result = round(approx_freq / pow(2, 9.0/12));
break;
case 'D': result = round(approx_freq / pow(2, 7.0/12));
break;
case 'E': result = round(approx_freq / pow(2, 5.0/12));
break;
case 'F': result = round(approx_freq / pow(2, 4.0/12));
break;
case 'G': result = round(approx_freq / pow(2.0, 2.0/12));
break;
default: return 1;
break;
}
return result;

输出即将到来 - 830

需要输出 - 831

我知道我对 round 函数的使用有问题,但我不知道我做错了什么。有人可以帮我吗?

最佳答案

引入一个偏移量,用于选择向下舍入变为向上舍入的边界。在对 round() 的所有调用中执行此操作,例如

approx_freq = round(offset + approx_freq * pow(2, 1.0/12));

我不确定,但我猜 offset 的值应该是 -0.5 以满足您的需求。
尝试并调整自己。

(请注意,正如其他评论/答案所指出的,何时舍入是一个棘手的问题。我建议在仔细检查每种情况下是否需要舍入后使用偏移量。)

关于c - 将函数舍入 1 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48718580/

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