gpt4 book ai didi

java - 疯狂变量、舍入数(int、double 等)

转载 作者:行者123 更新时间:2023-12-01 15:40:36 25 4
gpt4 key购买 nike

这是我的代码,尚未完全完成,对波兰语感到抱歉,但很容易得到它。 http://pastebin.com/QPmVaPFv所以,这是关于 vert 的,每个访客的价格有 4 个变量:1.大狗2.中型犬3.小型犬4.猫接下来的 4 个变量是访客数量,与之前相同(大、中、小、猫等)

然后文字说:每第 5 位大型犬主人均可享受 10% 的折扣每第三位中型业主均可享受 50% 的折扣每 4 个猫主人的价格为 1 美元,即

double zdpies=ldpies/5.;
double zspies=lspies/3.;
double zkot=ckot/4.;

这是有折扣的部分

之后我创建了变量并计算折扣价格

double cdpiespromo=cdpies/10.; Big dog
double cspiespromo=cspies/50.; medium dog
double ckotpromo=1; Cat

然后我计算了最终价格,即没有折扣的正常价格

--- 正常值:21.6 x 51.0 = 1101.6000000000001

流程已完成。

我得到了那个奇怪的数字,51。可以,但是 21.6 是错误的,一定是 22 而不是 21.6。当我使用“int”时,它说存在“精度损失”,有什么想法如何解决这个问题吗?

以下是用于计算折扣和无折扣最终价格的最后一个变量。

double idp=ldpies-zdpies; this calculates numbers of visitors without discount
double idc=idp*cdpies; this calculates price number of visitor * normalpriceofbigdog.

最佳答案

不要使用 float 或 double 进行财务计算,使用 BigDecimal

由于处理BigDecimal有点麻烦,所以我写了一个BdHelper类,以缩短某些操作/转换所需的代码。该类并不意味着完整,我实际上只编写了我需要的方法,但你明白了。

Jon Skeet talked about the pain of using floating point numbers伦敦 StackOverflow 开发日。

关于java - 疯狂变量、舍入数(int、double 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8104754/

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