我需要填充一个向量,使其包含权重总和,其中总和必须为 100。换句话说,项目数等于除数,其值是商,以确保(强制)总和的向量等于 100。
像这样:100/3=3.333333...
vector[0]=33.33
vector[1]=33.34
vector[2]=33.33
总和必须正好是 100(某种选择性舍入?)另一个例子:100/6 = 16.66666667
vector[0]=16.67
vector[1]=16.67
vector[2]=16.66
vector[3]=16.67
vector[4]=16.67
vector[5]=16.66
我曾在杂货店看到过类似的情况,其中的商品售价可能是 11 美元 3 件,因此收银机显示的价格为 3.67、3.66 等。
这些值加起来必须正好是 100,尽管我想用 epsilon 来做这件事,但那是行不通的。
const int divisor = 6;
const int dividend = 10;
std::vector<double> myVec;
myVec.resize(6);
for (int i = 0; i < divisor; ++i)
{
...some magic that I don't know how to do
}
编辑:客户希望以固定在小数点后两位的值存储(和显示)的值,以直观地看到它们加到 100。