相关疑难解决方法(0)

浮点数学是否破碎?

请考虑以下代码:

0.1 + 0.2 == 0.3  ->  false
Run Code Online (Sandbox Code Playgroud)
0.1 + 0.2         ->  0.30000000000000004
Run Code Online (Sandbox Code Playgroud)

为什么会出现这些不准确之处?

language-agnostic math floating-point floating-accuracy

2798
推荐指数
28
解决办法
28万
查看次数

Double vs. BigDecimal?

我必须计算一些浮点变量,我的同事建议我使用BigDecimal而不是double因为它会更精确.但我想知道它是什么以及如何最大限度地利用它BigDecimal

java floating-point double bigdecimal

272
推荐指数
6
解决办法
28万
查看次数

Java中的整数除法

这是一个基本问题,但我找不到答案.我已经研究了浮点运算和其他一些主题,但似乎没有任何东西可以解决这个问题.我确定我的术语错了.

基本上,我想要两个数量 - 完成和总数 - 并将它们分成一个百分比(已经完成了多少).数量是longs.这是设置:

long completed = 25000;
long total = 50000;

System.out.println(completed/total);  // Prints 0
Run Code Online (Sandbox Code Playgroud)

我已经尝试将结果重新分配给双 - 它打印0.0.我哪里错了?

顺便提一下,下一步是将这个结果乘以100,一旦这个小障碍被推翻,我认为应该很容易.

顺便说一句,这里没有作业,只是普通的老字号(今天可能编码过多).

java math floating-point println long-integer

87
推荐指数
3
解决办法
17万
查看次数

使用Float或Decimal作为会计应用程序的美元金额?

我们正在用VB.NET和SQL Server重写我们的旧会计系统.我们引入了一个新的.NET/SQL程序员团队来进行重写.大多数系统已经使用Floats完成了Dollar数量.我编程的遗留系统语言没有Float,所以我可能会使用Decimal.

你有什么建议?

Float或Decimal数据类型应该用于美元金额吗?

两者的优点和缺点有哪些?

在我们的日常scrum中提到的一个骗局是,当你计算一个返回超过两个小数位的结果的金额时,你必须要小心.听起来你必须将金额四舍五入到小数点后两位.

另一个Con是所有显示和打印金额必须有一个显示两个小数位的格式声明.我注意到有几次没有这样做,金额看起来不正确.(即10.2或10.2546)

专家是Float只占用磁盘上的8个字节,其中Decimal占用9个字节(十进制12,2)

vb.net sql-server accounting database-design currency

76
推荐指数
9
解决办法
4万
查看次数

如何解决Java Rounding Double问题

似乎减法正在触发某种问题,结果值是错误的.

double tempCommission = targetPremium.doubleValue()*rate.doubleValue()/100d;
Run Code Online (Sandbox Code Playgroud)

78.75 = 787.5*10.0/100d

double netToCompany = targetPremium.doubleValue() - tempCommission;
Run Code Online (Sandbox Code Playgroud)

708.75 = 787.5 - 78.75

double dCommission = request.getPremium().doubleValue() - netToCompany;
Run Code Online (Sandbox Code Playgroud)

877.8499999999999 = 1586.6 - 708.75

由此产生的预期值为877.85.

应该怎样做才能确保正确计算?

java math rounding

75
推荐指数
5
解决办法
16万
查看次数

对于纬度/经度,Java double vs BigDecimal

当存储通常格式为44.087585(即在点之前最多2个数字和6dp)的纬度/经度时,我是否需要打扰bigdecimals?

java double geospatial bigdecimal latitude-longitude

57
推荐指数
5
解决办法
3万
查看次数

为什么我看到一个双变量初始化为某个值,如21.4为21.399999618530273?

double r = 11.631;
double theta = 21.4;
Run Code Online (Sandbox Code Playgroud)

在调试器中,这些显示为11.63100000000000021.399999618530273.

我怎么能避免这个?

floating-point precision

46
推荐指数
5
解决办法
2万
查看次数

浮点是如何存储的?什么时候重要?

在对这个问题的跟进中,似乎有些数字根本不能用浮点表示,而是近似的.

如何存储浮点数?

是否有不同尺寸的通用标准?

如果我使用浮点,我需要注意什么样的问题?

它们是否是跨语言兼容的(即,我需要处理哪些转换才能通过TCP/IP将python程序中的浮点数发送到C程序)?

-亚当

floating-point rounding-error

36
推荐指数
4
解决办法
2万
查看次数

添加和减去双打会产生奇怪的结果

因此,当我使用Doubles在Java中添加或减去时,它会给我带来奇怪的结果.这里有一些:

如果我补充0.0 + 5.1,它给了我5.1.那是对的.

如果我添加5.1 + 0.1,它会给我5.199999999999(重复9s 的数量可能会关闭).那是错的.

如果我减去4.8 - 0.4,它会给我4.39999999999995(再次,重复9s可能会关闭).那是错的.

起初我认为这只是添加带小数值的双打的问题,但我错了.以下工作正常:

5.1 + 0.2 = 5.3
5.1 - 0.3 = 4.8
Run Code Online (Sandbox Code Playgroud)

现在,添加的第一个数字是保存为变量的double,尽管第二个变量从a中获取文本JTextField.例如:

//doubleNum = 5.1 RIGHT HERE
//The textfield has only a "0.1" in it.
doubleNum += Double.parseDouble(textField.getText());
//doubleNum = 5.199999999999999
Run Code Online (Sandbox Code Playgroud)

java double

28
推荐指数
1
解决办法
8万
查看次数

Java浮点高精度库

哪些Java库可以快速实现浮点或定点操作,精度为几千位?他们的表现如何?

对我来说,一个要求是它实现了一种乘法算法,该算法优于天真乘法算法,该算法花费4倍于2倍大数字的数字(比较乘法算法).

java floating-point

23
推荐指数
2
解决办法
2万
查看次数