C++ 我怎样才能四舍五入到一个数字的下一个50?

C++ 我怎样才能四舍五入到一个数字的下一个50?,c++,math,rounding,C++,Math,Rounding,我正在调试我的工资计算器,我想让一个变量四舍五入到最接近的50,但不包括100 例如,我有变量23324.60,我需要一个等于23350.00的公式 这是为了满足以下有关AR预扣税计算的说明 “由于净应纳税所得额少于50000美元,我们将把所得额调到$23350.00的50中间值(中间值为$23300.00和$23400.00)。”因为你将其四舍五入到50的每一个单数倍,你可以将其视为四舍五入到100整数,然后再加上50。例如,这将使200和299.99都四舍五入到250 基于此方法,我的解决方

我正在调试我的工资计算器,我想让一个变量四舍五入到最接近的50,但不包括100

例如,我有变量23324.60,我需要一个等于23350.00的公式

这是为了满足以下有关AR预扣税计算的说明


“由于净应纳税所得额少于50000美元,我们将把所得额调到$23350.00的50中间值(中间值为$23300.00和$23400.00)。”

因为你将其四舍五入到50的每一个单数倍,你可以将其视为四舍五入到100整数,然后再加上50。例如,这将使200和299.99都四舍五入到250

基于此方法,我的解决方案是:

双倍四舍五入收入(双倍收入){
返回50.0+100.0*楼层(收入/100.0);
}

标题中提供。另一种方法是在整数类型之间来回转换,但会有许多缺点,包括可读性差得多。

您需要的代码行很少show@TedLyngmo实际上是零(努力)。所以,除以50,取整,乘以50——这不是火箭科学。哦,等等,你说不是100。这算什么数学?我放弃了。顺便说一句:使用浮点表示货币值不是一个好主意,因为浮点变量不能准确地表示
0.1
0.01
之类的值(这些值不能表示为基数为2的分数)。表示货币的常用方法是使用整数值(例如,一个整数表示美分,或者一个结构包含两个整数值,一个表示美元,另一个表示美分)。如果我正确阅读了问题,99应该舍入到50,而不是100。
#include <iostream>
#include <math.h>

using namespace std;

int getRoundUp50(float value)
{
    return ceil(value * 0.02) * 50;
}

int main()
{
    cout << getRoundUp50(120.5) << endl;
    cout << getRoundUp50(125.0) << endl;

    return 0;
}
150
150