gpt4 book ai didi

algorithm - 导出浮点值的整数因子?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:02:23 25 4
gpt4 key购买 nike

我有一道数学题让我的大脑、白板和所有的笔都崩溃了。我正在处理一个表达 2 个值的文件,一个是被乘数,一个是百分比。这两个值都必须是整数。这两个值相乘产生一个范围。范围是一个浮点值。

我的用户编辑了范围,我必须计算新的百分比和被乘数值。困惑了吗?这是一个例子:

    Multiplicand: 25000 Apples    Percentage: 400 (This works out to .4% or .004)    Range: 100.0 Apples (Calculated by Multiplicand * Percentage)

To complicate things, the allowable values for Percentage are 0-100000. (Meaning 0-100%) Multiplicand is a value between 1 and 32bit int max (presumably unsigned).

I need to allow for users to input a range, like so:

Range: .04 Apples

并计算适当的百分比和被乘数。使用第一个示例:

    OriginalMultiplicand: 25000 Apples    OriginalPercentage: 400 (This works out to .4% or .004)    OriginalRange: 100.0 Apples (Calculated by Multiplicand * Percentage)    NewRange: .01 Apples    NewPercentage: 40    NewMultiplicand: 25 Apples

示例计算很简单,只需按新旧范围的比例因子向下调整被乘数和百分比即可。当用户将值更改为 1400.00555 之类的值时,就会出现问题。突然之间,我没有一种干净的方法来调整这两个值。

我需要一种算法方法来获取 M & P 的值,以产生最接近所需范围的可能值。有什么建议吗?

最佳答案

要最大化存储的小数点数,您应该使用 1 或 0.1% 的 P。如果 M 溢出,则递增 P。

因此对于您的 1400.00555 示例,P 为 1,M 为 1400006

您的算法将搜索最低的 P,以使 M 不会溢出。您可以在此处进行二进制搜索。

public int binarySearch(int P0, int P1) {
P = (P1 - P0)/2;
if(P == P0) {
if(R/(P0/100f) does not overflows 32-bit int) {
return P0;
} else {
return P1;
}
}
if(R/(P/100f) does not overflows 32-bit int) {
return binarySearch(P0, P);
} else {
return binarSearch(P, P1);
}
}

P = binarySearch(1, 100000);
M = round(R/(P/100f));

关于algorithm - 导出浮点值的整数因子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1302931/

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