返回信息流https://leetcode.com/problems/ugly-number/
这道题需要对2、3、5求对数,
用换底公式求3的对数时:
int y = (int) (Math.log(num) / Math.log(3));
num为243时,y应该是5,但是应该是由于精度问题只有4.999取整后成了4。。
怎么破。。。@icyfox @nuanyangyang
这是一条镜像帖。来源:北邮人论坛 / java / #48399同步于 2016/3/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
问个弱智问题,Java求Log3(243)等于4.9999怎么解决。。。
dss886
2016/3/10镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
四舍五入是否可破
这个题的答案是不是一定是int整数
【 在 dss886 (打击楼主) 的大作中提到: 】
: https://leetcode.com/problems/ugly-number/
: 这道题需要对2、3、5求对数,
: 用换底公式求3的对数时:
: ...................
是要向下取整,如果误差变成5.000001都没问题的,4.999取整变成4结果就错了。。
【 在 icyfox 的大作中提到: 】
: 四舍五入是否可破
: 这个题的答案是不是一定是int整数
:
你的做法很奇怪啊
【 在 dss886 (打击楼主) 的大作中提到: 】
: https://leetcode.com/problems/ugly-number/
: 这道题需要对2、3、5求对数,
: 用换底公式求3的对数时:
: ...................
你直接余235看看有没有余数就行了
【 在 dss886 (打击楼主) 的大作中提到: 】
: 确实有点奇怪。。。。这时间醉了
: [upload=1][/upload]
是有点蠢了。。。看了Discuss,有除法和递归的Solution
你这直接取余也不行的,5*7=35会判true
【 在 icyfox (【意涵团】狐狸|熊爸|软狗) 的大作中提到: 】
: 你直接余235看看有没有余数就行了
浮点数并不是所有的实数都能精确表示的。double只能精确到52位二进制小数。如果不能精确表示,那么double型的值就只能存近似值了。显然log(2), log(3)和log(5)都是无理数,不能精确表示,所以double型的结果都是近似值。两个近似值相除,结果有误差也是正常。
恩,懂了。。这题目我的思路不对。。。
【 在 nuanyangyang 的大作中提到: 】
: 浮点数并不是所有的实数都能精确表示的。double只能精确到52位二进制小数。如果不能精确表示,那么double型的值就只能存近似值了。显然log(2), log(3)和log(5)都是无理数,不能精确表示,所以double型的结果都是近似值。两个近似值相除,结果有误差也是正常。
用四舍五入?
【 在 dss886 (打击楼主) 的大作中提到: 】
: https://leetcode.com/problems/ugly-number/
: 这道题需要对2、3、5求对数,
: 用换底公式求3的对数时:
: ...................
通过『我邮2.0』发布