gpt4 book ai didi

C# 数学给出了错误的结果!

转载 作者:行者123 更新时间:2023-11-30 18:52:00 25 4
gpt4 key购买 nike

我理解这个问题背后的原理,但想到这在我的整个应用程序中都在发生,我需要找到解决方案,这让我很头疼。

double Value = 141.1;
double Discount = 25.0;
double disc = Value * Discount / 100; // disc = 35.275
Value -= disc; // Value = 105.824999999999999

Value = Functions.Round(Value, 2); // Value = 105.82

我使用 double 来表示非常小的数字。不知何故,在计算 141.1 - 35.275 中,结果的二进制表示给出了一个数字,该数字仅为 0.0000000000001。不幸的是,由于我随后四舍五入这个数字,所以给出了错误的答案。

我读过有关使用 Decimals 而不是 Double 的信息,但我无法将 Double 的每个实例都替换为 Decimal。有没有更简单的方法来解决这个问题?

最佳答案

如果您正在寻找自然为十进制的值的精确表示,您需要在所有地方将double 替换为decimal。您只是使用了错误的数据类型。如果您一直对整数使用 short,然后发现您需要处理比其支持的更大的值,您会怎么做?这是一样的交易。

但是,您真的应该尝试了解正在发生的事情...例如,为什么 Value 不正好等于 141.1。

我有两篇关于此的文章:

关于C# 数学给出了错误的结果!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5179452/

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