绝对差是两个数字之间差的绝对值。假设我有 2 个int变量(x和y),我想找到绝对差。一个简单的解决方案是:
unsigned diff = abs(x-y);
Run Code Online (Sandbox Code Playgroud)
然而,如果发生溢出(例如 if xisINT_MIN和yis ) ,这些会调用未定义的行为并给出不正确的结果INT_MAX。这会返回1(假设环绕行为)而不是按UINT_MAX预期返回。
我正在划分2个整数,并希望得到一个整数作为结果.我想要正确的Math.Round()方法,所以当我除以时,无论如何,它总是舍入到下一个整数.以下是一些期望如下的例子.
int result = (6/4); // = 2
int result = (3/4); // = 1
int result = (1/4); // = 1
int result = (8/4); // = 2
int result = (9/4); // = 3
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?
如何在C中得到一个数字的上限?
如果我将3除以2,我希望答案为2(即1.5舍入为2).
我们有一种将命令数据写入设备的方法.该方法首先将数据转换为设备接受的格式,然后将数据写入串行端口.数据转换使用下面给出的case语句完成.对于10个命令,我们需要转换数据.对于其他命令,我们不必转换数据(大约10个命令).
客户投诉代码未经优化.经常使用一些不需要数据转换的命令.
是否会直接if else语句优化代码?
在这种情况下,还有其他选项来优化代码吗?
switch (cmd_no)
{
case CMD_WR_ACC:
converted_command_data = (INT32)((((DOUBLE)cmd_data * CMD_WR_ACC_PARA1) / CMD_WR_ACC_PARA2) + 0.5);
break;
case CMD_WR_BIAS:
converted_command_data = (INT32)((((DOUBLE)cmd_data * CMD_WR_BIAS_PARA1) / CMD_WR_BIAS_PARA2) + 0.5);
break;
case CMD_WR_SUP:
converted_command_data = (INT32)((((DOUBLE)cmd_data * CMD_WR_SUP_PARA1) / CMD_WR_SUP_PARA2) + 0.5);
break;
case CMD_WR_FIL:
converted_command_data = (INT32)((((DOUBLE)cmd_data * CMD_WR_FIL_PARA1) / CMD_WR_FIL_PARA2) + 0.5);
break;
.
.
default:
converted_command_data = cmd_data;
break;
}
Run Code Online (Sandbox Code Playgroud) 在C中,我如何使1200/500 = 3.
我正在做家庭作业.
运输计算器:Speedy Shipping公司将根据您的包装重量以及您送包裹的距离来运送您的包裹.他们只会运送重达10磅的小包装.您需要有一个程序来帮助您确定他们将收取多少费用.费用基于每运送500英里.它们不是按比例分配的,即600英里与900英里的费用相同.
这是他们给你的表:
Package Weight--------------------------Rate per 500 miles shipped
2 pounds or less------------------------$1.50
More than 2 but not more than 6---------$3.70
More than 6 but not more than 10--------$5.25
这是一个测试用例.
测试用例数据:
重量:5.6磅
英里:1200英里
预期成绩:
您的运费是11.10美元
我的答案一直持续到7.40
c ×5
math ×3
c# ×1
ceil ×1
decimal ×1
difference ×1
integer ×1
numbers ×1
optimization ×1
rounding ×1