|
|
1
4
单精度
假设你是用科学记数法手工计算十进制数,根据规则,你可能只有四个有效数字。假设我让你用科学记数法写十二个,四个有效数字。回忆起初中,你写道: 1.200×10 一 现在我要计算12的平方,然后加0.5。这很简单: 1.440×10 二 + 0.005×10 二 =1.445×10 二 十二立方加上0.75怎么样: 1.728×10 三 +0.00075×10 三 =1.72875×10 三 但请记住,我只给你空间 四位有效数字 ,所以你必须 圆 ;然后我们得到: 1.728×10 三 + 7.5×10 - 1 =1.729×10 三 看到了吗?精度的不足会使计算结果出人意料。 在你的例子中,你在一个计算中得到了999999,你试图精确到0.01。日志 二 (999999)=19.93和对数 二 (0.01)=-6.64。差异大于23;因此,要准确执行此计算,需要超过23个二进制数字。 因为浮点数学本质上是精确的,所以它通常是货币计算的一个错误选择,在货币计算中必须精确到最后一分。但你真的关心你申请表中的零头吗?如果不是,那为什么不干脆去掉小数点,把美分(而不是美元)存储在64位整数中呢?二 六十四 ,超过了整个地球的GDP。 |
|
|
2
3
浮点运算总是会产生奇怪的货币类型计算结果。 黄金法则是,浮点数对你测量升、码、光年、蒲式耳等的事物是好的,但对你计算的事物不是好的 羊、豆子、纽扣等。 大多数的金钱计算都是为了数硬币,所以使用整数数学 你不会得到奇怪的结果。要么使用固定的十进制算术 图书馆(在iphone上可能会被过度使用)或者存储你的数量 整个数字的美分和只转换成美元和美分的展示。 |
|
|
Leo · 为什么carg(-0)返回-pi? 1 年前 |
|
Fyodor · 在C中使用sin和cos计算数学表达式不正确? 1 年前 |
|
|
Alexander · 为什么数字的输出不同? 1 年前 |
|
Ronny · 如何防止程序返回“inf”? 2 年前 |
|
|
EMS · 为什么双重打印的值与C中的浮点值相同,而它们的大小不同? 2 年前 |
|
|
Dakolas · 对python十进制库感到困惑 2 年前 |
|
|
RTC222 · 无法获取vrndscalepd的正确舍入模式代码 2 年前 |