标签: decimal-point

一般编程:十进制数,浮点数

我可能完全错了,我对此一无所知,但我对编程语言中的十进制数字数据有疑问.我知道浮点数并不完全精确,因为它们以二进制形式存储有权或其他东西,但我总是想知道为什么十进制数数据类型不只是存储一个数字就像没有小数一样,所以做计算就像如果没有小数,则在之后添加.就像在这种情况下:

2.159 * 3.507 --> 2159 * 3507 = 7571613
  ^^^     ^^^
  123     456

6 decimals in total... 7571613 -> 7.571613
                        ^^^^^^
                        654321
Run Code Online (Sandbox Code Playgroud)

所以2.159*3.507 = 7.571613

为什么它不能像那样工作?

floating-point decimal-point

2
推荐指数
1
解决办法
2365
查看次数

Java,C,C++等中十进制数的精度

假设我们有这种循环(伪代码)

double d = 0.0
for i in 1..10 {
    d = d + 0.1
    print(d)
}
Run Code Online (Sandbox Code Playgroud)

在C与printf("%f", d)我得到这个:

0.100000
0.200000
0.300000
...
1.000000
Run Code Online (Sandbox Code Playgroud)

在C++中,cout << d我得到了这个:

0.1
0.2
...
1
Run Code Online (Sandbox Code Playgroud)

在Java中,System.out.println(d)我得到了这个:

0.1
0.2
0.3 (in debug mode, I see 0.30000000000004 there but it prints 0.3)
...
0.7
0.799999999999999
0.899999999999999
0.999999999999999
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  1. 为什么这个简单的代码用Java打印得如此糟糕且在C中是否正确?
  2. 这在其他语言中如何表现?

c c++ java decimal decimal-point

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

在字符串中指定变量的小数位

在短暂地寻找几个小时后,我看到了我的问题的多种解决方案,但我正在努力实施它们,希望有人可以帮助一个菜鸟.

问题是我在ASP/MySQL Web应用程序中有一个下拉框,显示一些错误的价格.例如,如果数据是32.00,则显示的数字将返回为32,类似地,如果6.50显示为6.5数据类型或价格在db表中设置为十进制(19,2)长度,并且价格在其他地方正确显示除了在下拉框中显示的这一个选项实例中.我很确定有一个简单的解决方案,非常感谢修复.我以为我可以添加.toFixed(2),所以实际上它就像这个<%= DealCartsDB("price").toFixed(2)%>,但它说不支持.

<select name="deal" class="qty" onChange="swapDeal()">
<option value="-1">CHOOSE YOUR DEAL</option>
<% while not DealCartsDB.Eof %>
<option value="<%=DealCartsDB("dealid")%>"<% if clng(dealID)=DealCartsDB("dealid") then %> selected<% end if %>><%=DealCartsDB("dealname")%>........&pound;<%=DealCartsDB("price")%></option>
<% DealCartsDB.MoveNextWend %></select>
Run Code Online (Sandbox Code Playgroud)

任何帮助非常感谢,谢谢.

decimal-point asp-classic

2
推荐指数
1
解决办法
7634
查看次数

在Python中使用"Decimal"

有人可以解释下面发生的事情:(我使用Python 3.3)

1. >>> Decimal("0.1") + Decimal("0.1") + Decimal("0.1") - Decimal("0.3")
       Decimal('0.0')

2. >>> Decimal(0.1) + Decimal(0.1) + Decimal(0.1) - Decimal(0.3)
       Decimal('2.775557561565156540423631668E-17')

3. >>> Decimal(0.1 + 0.1 + 0.1 - 0.3)
       Decimal('5.5511151231257827021181583404541015625E-17')
Run Code Online (Sandbox Code Playgroud)

我知道它与浮点限制有关,如果有人可以解释原因,我会很高兴

  • 什么有" "要做的实例1和2以上的区别
  • 鉴于两者都没有,为什么2会产生3的差异答案" "

python decimal-point python-3.x

2
推荐指数
1
解决办法
2172
查看次数

mssql显示1个小数点(如果可用),否则显示无

我认为很简单.

我有一个显示项目长度的查询.

查询:

select length from vw_OutstandingVsInStock1 OVI
LEFT JOIN Departments DEP
on OVI.Department COLLATE DATABASE_DEFAULT=DEP.Description
where OutstandingVolume>0.39 
Run Code Online (Sandbox Code Playgroud)

这会返回如下结果:

0.9
1.2
1.5
1.8
2.1
2.4
2.7
3.0
3.3
3.6...
Run Code Online (Sandbox Code Playgroud)

3.0我希望它显示为的情况下3

所以如果没有小数值,则显示int没有小数.如果存在十进制显示十进制到1小数点?

所以期望的输出是36不是3.06.0

我正在使用MSSQL 2012.

sql-server decimal-point

2
推荐指数
1
解决办法
1648
查看次数

如何在xtable输出中指定小数位而不是有效位

我正在使用R xtable包将我的数据帧打印为LaTeX表.我一直在使用该digits选项来指定表格中值的有效位数.然而,有了digits=3,我得到如下输出:

...
chat & chatd & 1.04 & -0.526 & 0.943 \\ 
dav1 & davis & 0.922 & 0.0551 & 0.374 \\ 
...
Run Code Online (Sandbox Code Playgroud)

我希望能够指定表格中的小数位数,这样所有内容都有3个小数位,即使最后几个地方用零填充也是如此.因此,例如,第一个数字列将具有

1.040
0.922
Run Code Online (Sandbox Code Playgroud)

所以一切都有3个小数位,所以一切都排好了.

有没有办法做到这一点?

latex r decimal-point significant-digits xtable

2
推荐指数
1
解决办法
3789
查看次数

用D3中的轴上的逗号替换小数点?

这是关于D3中轴的刻度:有没有办法用数字中的逗号替换小数点?我希望数字显示如下(在德国这是正常的,这么大的数字只是为了演示)

1.000.000,1 // This is one million and a tenth
Run Code Online (Sandbox Code Playgroud)

而不是这样的:

1,000,000.1
Run Code Online (Sandbox Code Playgroud)

我已经阅读了有关该主题的文档,但似乎没有可能!?到目前为止,这是我的相关代码:

localeFormatter = d3.locale({
                "decimal": ".",
                "thousands": ",",
                "grouping": [3],
                "currency": ["", "€"],
                "dateTime": "%a, %e %b %Y, %X",
                "date": "%d.%m.%Y",
                "time": "%H:%M:%S",
                "periods": ["", ""],
                "days": ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"],
                "shortDays": ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
                "months": ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
                "shortMonths": ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", …
Run Code Online (Sandbox Code Playgroud)

javascript localization decimal-point d3.js

2
推荐指数
1
解决办法
1982
查看次数

如何用零填充数字的小数位?

假设以下数字:

local a = 2
local b = 3.1
local c = 1.43
local d = 1.0582
Run Code Online (Sandbox Code Playgroud)

我的目标是将这些数字四舍五入到小数点后两位。结果应该分别是这样的:

a = 2.00
b = 3.10
c = 1.43
d = 1.06 or 1.05
Run Code Online (Sandbox Code Playgroud)

显然,我知道任何带有尾随小数零的数字都会被四舍五入。2.002。但我需要将数字作为字符串,并且为了使其在视觉上更具吸引力,我需要这两个小数位。

这是我用来四舍五入到小数点后两位的函数:

function round(num, numDecimalPlaces)
local mult = 10^(numDecimalPlaces or 0)
return math.floor(num * mult + 0.5) / mult
end
Run Code Online (Sandbox Code Playgroud)

这对于测试用例c和效果很好d,但会产生错误的结果 和ab它不会用零填充。我理解这是因为舍入函数获取数字并计算它们 - 因此多余的零被切断。

但这并不是我的目标——不是切断它们。

我尝试过字符串操作,通过检查 a 是否在数字中以及在数字中的位置,但这在任何情况下都.不起作用。我的方法:

local zei
if i < …
Run Code Online (Sandbox Code Playgroud)

lua decimal-point

2
推荐指数
1
解决办法
4490
查看次数

f 字符串小数格式舍入

其他问题表明,Python f 字符串在某个小数点处对数字进行四舍五入,而不是截断它们。

我可以用下面的例子来展示这一点:

>>> number = 3.1415926
>>> print(f"The number rounded to two decimal places is {number:.2f}")
The number rounded to two decimal places is 3.14
>>>
>>> number2 = 3.14515926
>>> print(f"The number rounded to two decimal places is {number2:.2f}")
The number rounded to two decimal places is 3.15
Run Code Online (Sandbox Code Playgroud)

然而,我遇到了另一种情况,Python 似乎截断了数字:

>>> x = 0.25
>>> f'{x:.1f}'
'0.2'
Run Code Online (Sandbox Code Playgroud)

我本以为0.25,精确到小数点后一位,会四舍五入为0.3。我是否遗漏了什么,或者这种行为不一致?

python decimal-point rounding

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

如何在 RPGLE 中声明小数位固定或自由格式?

我对RPGLE了解不多。我正在尝试解决给我的这个小练习。我从来没有做过或见过使用小数的练习。我想获得 7 个值的百分比。所以,我想做如下计算。

例如在 RPGLE 中。

DTotal            S              3P 0       
DPercnt           S              2P 2       
 /Free
   Total = 589;
   Percnt = (Total/700)100;
   Dsply Percnt;
   *Inlr = *On;
 /End-Free
Run Code Online (Sandbox Code Playgroud)

预期输出是84.142857143将小数位四舍五入到两位(84.14)或四位(84.1430)

  1. 我应该使用哪种数据类型TotalPercent变量?
  2. 如何声明Percent变量(打包或分区)来保存两位、四位或 N 位小数?
  3. 任何人都可以请输入“RPG IV”或固定格式中的声明部分和计算部分吗?

我遇到的错误和我进行的更正:

  1. The end of the expression is expected.(在东南大学)

    对于上面的错误,我添加了*并解决了Percnt = (Total/700) * 100;

  2. 下面是第二个错误。

    The target for a numeric operation is too small to hold the result (C G D …
    Run Code Online (Sandbox Code Playgroud)

decimal-point division rpgle percentage

2
推荐指数
1
解决办法
1775
查看次数