大家看看我是不是见鬼了???

2017-07-19 17:36:53 +08:00
 XiaoFaye

5772 次点击
所在节点    程序员
24 条回复
ss098
2017-07-19 17:38:22 +08:00
你这是字符串之间的比较,而不是数字间的比较。
BOYPT
2017-07-19 17:38:51 +08:00
没毛病啊
XiaoFaye
2017-07-19 17:42:14 +08:00
好吧,还以为 toFixed 是返回保留两位小数的数字,是我错了。。。。

PS:JS 直接对比浮点数会不会有坑呀?
erichuang1994
2017-07-19 17:42:53 +08:00
字符串比较是比较字典序
akrf
2017-07-19 17:43:19 +08:00
js 就是鬼呀
gino86
2017-07-19 17:48:02 +08:00
浮点数一般都不建议用来进行比较,尤其是相等性
SakuraKuma
2017-07-19 17:58:48 +08:00
parseFloat 后相减<Number.EPSILON 用于比较浮点数就好了~
autoxbc
2017-07-19 20:11:34 +08:00
如果是自己玩,建议用显式转换,隐式转换坑比较多,一般人也做不到熟读规范;如果是业务代码,建议用 Math.js 库,js 处理数字有残疾。
linhaiqi
2017-07-19 20:13:07 +08:00
呵呵。。。
klesh
2017-07-19 20:36:44 +08:00
@akrf
@autoxbc
说得好像
klesh
2017-07-19 20:40:03 +08:00
@klesh 说得好像其它语言原生类型就没问题一样。百度下浮点数吧,所有语言一个样都是不精确的。
ech0x
2017-07-19 21:22:57 +08:00
这其实是 IEEE 754 的锅,对于遵守 IEEE 754 标准实现浮点数的语言,直接比较浮点数大小都有坑,合理的解决方法正如 @SakuraKuma 所说的把两个浮点数相减与零比较大小。
这里有个收集语言浮点数表现的网站:0.30000000000000004.com
mingyun
2017-07-20 00:21:51 +08:00
神奇的 js
Sparetire
2017-07-20 02:23:00 +08:00
js 是比较挫但这里显然不是 js 的锅,和浮点数也没个半毛钱关系,令我惊讶的是竟然只有一楼一个说得最准确。。可能二楼也知道原因,"4">"1"没毛病
zhpech
2017-07-20 02:27:13 +08:00
……楼里说的都是什么鬼 这是字符串之间的比较,逐字字典序比较,另外无论是 "" 还是文档都可以看出这返回的是字符串,不要动不动就黑 JS C 语言也这么比……

numObj.toFixed([digits])

Returns: A string representation of numObj that does not use exponential notation and has exactly digits digits after the decimal place. The number is rounded if necessary, and the fractional part is padded with zeros if necessary so that it has the specified length. If numObj is greater than 1e+21, this method simply calls Number.prototype.toString() and returns a string in exponential notation.
Perry
2017-07-20 02:43:27 +08:00
双引号:妈蛋没人在乎我
wbswjc
2017-07-20 03:11:53 +08:00
这时候就体现 php 类型转换的人性化了 (<?php "1.1" < "2.2" == true; ?>, 我觉得要不就用强类型, 要不就把自动类型转换做得人性化一点, js 对搞不拎清的人不太友好, 坑很多, 虽然楼主说的这个应该不算坑- -
cxbig
2017-07-20 03:18:28 +08:00
@wbswjc PHP 一样有 Epsilon 的坑
http://php.net/manual/en/language.types.float.php

无论是不是动态类型的参数,在涉及比较的时候最好还是转换一下,别偷懒。
autoxbc
2017-07-20 03:30:41 +08:00
@Sparetire
@zhpech

仔细读的话会发现,楼主在 3 楼已经表示弄懂了,不过又顺带提问浮点数是否有坑。

所以本节点所有提到本题是字符串比较的,都是直接回答楼主的提问;所有提到浮点数问题的,都是回答楼主在 3 楼的提问,并没有谁看不出问题在哪。
XiaoFaye
2017-07-20 05:09:25 +08:00
@autoxbc
@zhpech
@ech0x
@ss098
@SakuraKuma 非常感谢大家的回复,由于本人主力不是 JS,难免会犯一些低级的错误,想当然地以为 toFixed 返回的是数字。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/376466

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX