问题标签 [decimal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1524 浏览

decimal - 如何将大数转换为十进制?

0x34363932353433373538323038353135353439

0 投票
15 回答
715076 浏览

c# - 如何在 C# 中将数字四舍五入到小数点后两位?

我想使用该Math.Round功能来做到这一点

0 投票
8 回答
29272 浏览

java - 如何检查一个双精度数是否最多有 n 个小数位?

目前我有这个方法:

但是这种方法checkDecmialPlaces(649632196443.4279, 4)可能失败了,因为我在以 2 为基数的基础上进行了以 10 为基数的数学运算。

那么如何才能正确完成这项检查呢?

我想得到一个双精度值的字符串表示,然后用正则表达式检查它——但这感觉很奇怪。

编辑: 感谢所有的答案。在某些情况下,我真的得到了双倍的回报,对于这些情况,我实施了以下措施:

我将其更改round为截断。似乎所做的计算round增加了太多的不准确性。至少在失败的测试用例中。
正如你们中的一些人指出的那样,如果我可以得到我应该BigDecimal用来检查的“真实”字符串输入,所以我已经完成了:

我得到的double值来自读取 excel 文件的 Apache POI API。我做了一些测试,发现虽然 API 返回数字单元格的值,但当我立即使用以下double格式对其进行格式化时,我可以获得准确的表示: doubleDecimalFormat

这也适用于无法以二进制格式精确表示的值。

0 投票
6 回答
19430 浏览

python - 浮点数和小数点的小数位问题。十进制

我似乎在使用浮点数时失去了很多精度。

例如我需要求解一个矩阵:

这是我用来从文本文件中导入矩阵的代码:

我需要使用 gauss-seidel 求解,所以我需要重新排列 x、y 和 z 的方程:

这是我用来重新排列方程式的代码。b是一个系数矩阵,y是答案向量:

然而,我得到的答案并不精确到小数位。

例如,从上面重新排列第二个等式后,我应该得到:

我得到的是:

这似乎不是一个大问题,但是当您将数字提高到非常高的幂时,误差会很大。有没有解决的办法?我尝试了这Decimal门课,但它不适用于权力(即,Decimal(x)**2)。

有任何想法吗?

0 投票
9 回答
2274 浏览

asp-classic - ASP/VBScript“陷阱”

我正在支持/增强用 Classic ASP/VBScript 编写的 Web 应用程序。自从我每天使用这两种容量以来,已经有大约 10 年了。我刚刚遇到了一个我认为是“陷阱”的问题,并且想知道其他人是否有类似的事情我应该学会注意。

我的问题:
我必须将 SQL 表中的列从浮点数转换为十进制数。事实证明,十进制不是 vbscript 中真正支持(或支持良好)的类型。所以下面的代码:

会在行上出现类型不匹配错误:

经过大量搜索,我发现:

解决了这个问题。但这似乎不是一件显而易见的事情,我花了一段时间才弄清楚为什么我在那条线上得到了类型不匹配。

所以我对大家的问题是,你还遇到过哪些类似的小怪癖?ASP/vbscript 中有哪些您认为是我应该注意的“陷阱”的东西?

0 投票
2 回答
2180 浏览

tsql - t-sql 十进制赋值更改值

为什么下面的 select 语句会返回两个不同的值?

0 投票
10 回答
43227 浏览

c++ - 在 C++ 中截断十进制值

将值为 0.6000002的 C++float变量截断为值为 0.6000 并将其存储回变量中的最简单方法是什么?

0 投票
11 回答
110169 浏览

python - Python浮点到十进制转换

Python Decimal 不支持从 float 构造;它希望您必须先将浮点数转换为字符串。

这是非常不方便的,因为浮点的标准字符串格式化程序要求您指定小数位数而不是有效位数。因此,如果您有一个可能有多达 15 位小数的数字,则需要格式化为,如果您在小数点 ( )Decimal("%.15f" % my_float)之前还有任何有效数字,这将在小数点后 15 位给您带来垃圾。Decimal("%.15f" % 100000.3) == Decimal('100000.300000000002910')

有人可以建议一种在用户输入时从浮点数转换为十进制保留值的好方法,可能会限制可以支持的有效数字的数量吗?

0 投票
8 回答
18492 浏览

c# - 双倍真的不适合赚钱吗?

我总是在 c# 中告诉 double 类型的变量不适合钱。所有奇怪的事情都可能发生。但我似乎无法创建一个示例来演示其中的一些问题。谁能提供这样的例子?

(编辑;这篇文章最初被标记为 C#;一些回复提到了 的具体细节decimal,因此意味着System.Decimal)。

(编辑 2:我特别要求一些 c# 代码,所以我认为这不仅仅是语言不可知的)

0 投票
7 回答
26876 浏览

double - 十进制与双倍速

我编写财务应用程序时,我不断地与使用双精度还是使用小数的决定作斗争。

我所有的数学都适用于小数点后不超过 5 位且不大于 ~100,000 的数字。我有一种感觉,无论如何,所有这些都可以表示为双精度数而不会出现舍入误差,但从未确定过。

为了明显的速度优势,我会继续从小数切换到双精度,除了在一天结束时,我仍然使用 ToString 方法将价格传输到交易所,并且需要确保它始终输出数字 I预计。(89.99 而不是 89.99000000001)

问题:

  1. 速度优势真的像天真的测试所暗示的那样大吗?(约 100 次)
  2. 有没有办法保证 ToString 的输出是我想要的?我的号码总是可表示的这一事实是否可以保证这一点?

更新:在我的应用程序运行之前,我必须处理大约 100 亿次价格更新,出于明显的保护原因,我现在已经使用小数实现了,但是开启需要大约 3 个小时,双打会大大减少我的开启时间. 双打有安全的方法吗?