10%+10% 不等于 0.2?

2024-02-27 08:32
文章标签 等于 0.2 10%

本文主要是介绍10%+10% 不等于 0.2?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

看到这个标题,你可能会觉得震惊,怎么会不是0.2呢?

最近在知乎上看到这个有意思的问题,为什么手机上的计算器计算 10%+10% 都错了,结果不是0.2,而是0.11。

第一感觉是不可思议,赶紧拿出我的华为手机(EMUI版本为9.1)测试了下,果然是0.11!

640?wx_fmt=png



看看谷歌的计算器,0.2没错。

640?wx_fmt=png

但是搜索计算器 再计算的结果却是0.11,很奇怪。

640?wx_fmt=png

然后在在线自动问答系统搜索引擎wolframalpha上看看https://www.wolframalpha.com/input/?i=10%25%2B10%25

640?wx_fmt=png

它给出了3种结果,有0.2和0.11 。

640?wx_fmt=png

ps:wolframalpha这个网站计算数学公式很不错,比如开根号算黄金分割比 

640?wx_fmt=png

搜索了下苹果和小米等手机都是如此。

640?wx_fmt=png

然而魅族手机却是个例外。

640?wx_fmt=png

魅族副总裁在微博上的解释是这样的 https://weibo.com/1444241363/I554TgDEs?

本质上并不是对或错的问题,我们只是考虑的更多,增加了人性化的算法判断。10%+10%=0.11 这个是国外的使用逻辑,而国内的算数逻辑是 10%+10%=0.2,所以我们针对不同地区的固件做了不同的算法判断。

算小费等特殊场景,很多国家餐厅吃饭给10-20%的小费,这时100+10%相当于100+100*10%,相当方便的一种人性化设计。

640?wx_fmt=png

所以10%+10%是按照10%+(10% x 10%)这个逻辑得出0.11的结果,对应的10+10%就是11。

只能说国内和国外使用习惯不同,中国人没有付小费的习惯,而且我们一般是用0.1+0.1算的,这应该算计算器的feature,不算bug。

640?wx_fmt=png

看看你的手机计算器结果是0.2还是0.11?

这篇关于10%+10% 不等于 0.2?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/751819

相关文章

【JavaScript】0.1 + 0.2 = 0.30000000000000004该怎样理解?

如果你以前没了解过类似的坑,乍一看似乎觉得不可思议。但是某些语言下事实确实如此(比如 Javascript): 再看个例子,+1 后居然等于原数,没天理啊! 如果你不知道原因,跟着楼主一起来探究下精度丢失的过程吧。 事实上不仅仅是 Javascript,在很多语言中 0.1 + 0.2 都会得到 0.30000000000000004,为此还诞生了一个好玩的网站 0.30000000

二叉树的遍历(篇4)判断从根到叶节点的和是否等于某个给定的值

给定二叉树和一个数sum,如果从树的根开始到叶节点的值等于sum,则返回true。 如果没有找到这样的路径,则返回false。 例如, 在上述树根到叶节点存在具有以下和。 21 - > 10 - 8 - 3 23 - > 10 - 8 - 5 14 - > 10 - 2 - 2 因此,返回的值应该只对数字21,23和14. true。对于任何其他数字,返回值应该为false。 算

js 判断是否等于0不要用!

var a = $('#a').val(); // a等于0// 不要用!a,这个可能等于false,因为a可能被认为是字符串if(!a){}// 可以用if(a == 0){}

1秒等于1000毫秒, 1毫秒等于1000微秒,1微秒等于1000纳秒

常用时间单位转换指南 在计算机科学、物理学以及其他领域中,我们经常需要处理不同量级的时间单位。了解这些单位之间的转换关系,可以帮助我们更准确地进行计算和分析。下面是一些常用的时间单位及其相互之间的转换。 时间单位概述 秒(Second, s):基本时间单位,定义为铯-133原子基态的两个超精细能级间跃迁对应辐射的9,192,631,770个周期的持续时间。毫秒(Millisecond, ms

最大值最小值小于等于K的最长长度

使用一个set进行维护中间的数字,然后滑窗

【Leetcode 2283 】 判断一个数的数字计数是否等于数位的值—— 数组计数

给你一个下标从 0 开始长度为 n 的字符串 num ,它只包含数字。 如果对于 每个 0 <= i < n 的下标 i ,都满足数位 i 在 num 中出现了 num[i]次,那么请你返回 true ,否则返回 false 。 示例 1: 输入:num = "1210"输出:true解释:num[0] = '1' 。数字 0 在 num 中出现了一次。num[1] = '2' 。数

【zabbix教程六】——自定义item和trigger当内存不足10%时触发报警

引言   本文结合配置内存不足10%触发报警的需求,顺便给大家介绍我们怎样自定义item和trigger,在前几篇博客中使用了zabbix给我们提供的模板,里面都已经配置好了item和trigger。但是给我们的模板是当内存小于20M的时候才会触发报警,这样不能满足我们的需求,我们需要在内存不足10%的时候触发,这时候需要我们自定义一个item和trigger。  1、在Template

IDEA 2024.2.0.2 使用 Jrebel and XRebel 热部署

安装 激活 工具网站中url和邮箱复制进去 设置 允许项目自动构建 允许开发过程中自动部署

IntelliJ IDEA ideaIU-2024.2.0.2.exe 启动 IDE 失败

以下是一些可能会导致 IDE 启动失败的问题的情况和解决方案: 启动 IDE 时弹出 Start Failed 的对话框,并且对话框内的信息中含有 crack 相关的内容 请在以下位置找到 .vmoptions 文件,打开并查看有没有 -javaagent 这行内容,如果有的话,请将这行删除。 Windows: %APPDATA%\JetBrains\<product><version>