有人可以解释为什么在lua中运行:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<CreateAndSendEnvelope xmlns="http://www.docusign.net/API/3.0">
<Envelope>
[All the good envelope stuff]
</Envelope>
<Envelope>
[All the second good envelope stuff]
</Envelope>
[closing XML]
,而
return 256.65 * 1000000 + .000000005 - 256 * 1000000 gives 649999.99999997
从我所看到的,它似乎是一个严格的小数65(它似乎也是15)和256 - 267范围内的整数的问题。我知道这与使用浮点进行这些计算有关,但是我仍然很好奇这些价值观的特别之处
答案 0 :(得分:2)
这些值的特殊之处在于0.65不是二进制分数(即使它是小数部分),因此无法在浮点中精确表示。
为了记录,这不是Lua特有的。在C中也会发生同样的事情。
答案 1 :(得分:1)
出于同样的原因,10/3是碱基10中的重复部分。在碱基3中,除以3将导致整数。在基数2(用于表示计算机中的数字)中,您生成的数字会产生可以精确表示的分数。