由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 来问一道面试题,除以很大的数
相关主题
只用加减实现整数除法,到底想考查什么?请教一道题
除法有什么规律吗?M 家电面
问一个面试题,给两个数,求商和余数非 interview question (转载)
高通 面试题 疑问。。最近onsite的时候刚拿到一道面试题?
G等消息中 求blessAmazon 二面面经
问一道 ama的除法题一个关于SVD的面试题 (转载)
问一个题目一道面试题请教 找preference相似的用户
整数除法coding question
相关话题的讨论汇总
话题: double话题: deviser话题: quotient话题: reminder话题: range
进入JobHunting版参与讨论
1 (共1页)
i*****d
发帖数: 962
1
给定一个很大很大的数(string)和一个除数(int),给这个大数做除法,返回的结果是
double类型。我的想法是从第一个数字开始读,不够除的话就继续读下一位,然后把余
数加给后面,读完的话就加小数点,余数*10继续运算。但是想不明白怎么去判断结果
已经超过double的精度?要是这个是除不尽的话,在什么情况下终止计算?
y**********u
发帖数: 2839
2
java biginteger?
i*****d
发帖数: 962
3

可以assume是吧。爱你

【在 y**********u 的大作中提到】
: java biginteger?
B********r
发帖数: 2
4
Assuming the result is within the double range. Then, there's no need to
consider double precision. You handle it as if doing the integer division to
get quotient and reminder. and the reminder divided by deviser can be done
using "/" operator. so assign quotient+(reminder/deviser) to a double, you
are done. Of course, you want to be sure your quotient is within the range
of double.
If the result is guaranteed within the double range, you have to check as
you do long division and error out as soon as you result is beyond double
range.

【在 i*****d 的大作中提到】
: 给定一个很大很大的数(string)和一个除数(int),给这个大数做除法,返回的结果是
: double类型。我的想法是从第一个数字开始读,不够除的话就继续读下一位,然后把余
: 数加给后面,读完的话就加小数点,余数*10继续运算。但是想不明白怎么去判断结果
: 已经超过double的精度?要是这个是除不尽的话,在什么情况下终止计算?

z*********n
发帖数: 1451
5
double 精度是16位有效数字,算出来16位有效数字了就可以了。
或者保险点,多算几位,转double,肯定够了。
面试不可能考察这个点吧。你能把你说的那部分做出来应该就过了。
还有一个实在没办法的办法(假设不知道你的语言里double到底精度多少,也查不到)。
就是把你每轮结果都转一个double出来,然后比较相邻两轮的double结果是否有变化。
如果没变化说明你继续往下算不会影响最终的double了,可以终止循环。
z*********n
发帖数: 1451
6

to
done
这位的没看懂,如果您的“deviser”不在double 范围内,你reminder/“deviser”
如何用"/" operator呢?不还得继续用string做?那不和lz说的本质一样?但你依然需
要考虑何时终止循环,也就是double精度的问题?我理解错了吗?

【在 B********r 的大作中提到】
: Assuming the result is within the double range. Then, there's no need to
: consider double precision. You handle it as if doing the integer division to
: get quotient and reminder. and the reminder divided by deviser can be done
: using "/" operator. so assign quotient+(reminder/deviser) to a double, you
: are done. Of course, you want to be sure your quotient is within the range
: of double.
: If the result is guaranteed within the double range, you have to check as
: you do long division and error out as soon as you result is beyond double
: range.

y**********u
发帖数: 2839
7
还是精肛兄厉害,有日子没来了,thanksgiving出去哈皮了吧
吼吼吼

)。

【在 z*********n 的大作中提到】
: double 精度是16位有效数字,算出来16位有效数字了就可以了。
: 或者保险点,多算几位,转double,肯定够了。
: 面试不可能考察这个点吧。你能把你说的那部分做出来应该就过了。
: 还有一个实在没办法的办法(假设不知道你的语言里double到底精度多少,也查不到)。
: 就是把你每轮结果都转一个double出来,然后比较相邻两轮的double结果是否有变化。
: 如果没变化说明你继续往下算不会影响最终的double了,可以终止循环。

1 (共1页)
进入JobHunting版参与讨论
相关主题
coding questionG等消息中 求bless
讨论一道面试题问一道 ama的除法题
问一道古老的面试题问一个题目
狗家实习面试题整数除法
只用加减实现整数除法,到底想考查什么?请教一道题
除法有什么规律吗?M 家电面
问一个面试题,给两个数,求商和余数非 interview question (转载)
高通 面试题 疑问。。最近onsite的时候刚拿到一道面试题?
相关话题的讨论汇总
话题: double话题: deviser话题: quotient话题: reminder话题: range