l*********s 发帖数: 5409 | 1 要设计一个有理数的类,定义加法和等于。我的问题是如果我用int储存分子分母,做
加法时应为涉及到乘法精度很容易溢出,(a)怎么检测乘法是否溢出;(2)一般怎么
处理,扔异常? |
a***n 发帖数: 538 | |
t**********1 发帖数: 550 | 3 让你自己表示整数吧?
分子分母都可以很多位。
面试题吧?就为了折腾你而已。 |
l*********s 发帖数: 5409 | 4 谢谢,看看去
【在 a***n 的大作中提到】 : boost有这个类,看下别人怎么写的吧。
|
g****t 发帖数: 31659 | 5 我多年前做的是用长整数算完,然后返回短整数。
【在 l*********s 的大作中提到】 : 要设计一个有理数的类,定义加法和等于。我的问题是如果我用int储存分子分母,做 : 加法时应为涉及到乘法精度很容易溢出,(a)怎么检测乘法是否溢出;(2)一般怎么 : 处理,扔异常?
|
l*********s 发帖数: 5409 | 6 好像不是bignum,我问考官数值范围他说用系统的int就行,但是这样溢出肯定要处理
了,不知道是不是除了异常还有其他的trick?
【在 t**********1 的大作中提到】 : 让你自己表示整数吧? : 分子分母都可以很多位。 : 面试题吧?就为了折腾你而已。
|
h**********c 发帖数: 4120 | 7 I give you an algorithm called preemptive division: (GNU license)
first use the maximum number you consider less than overflow, max divides
the first multiplier. If the result is less than the the second number you
are
goging to multiply, then there is a overflow. |
h**********c 发帖数: 4120 | 8 in data structure book, it is called sentry. |
l*********s 发帖数: 5409 | 9 这也只能检测溢出吧,出问题一般怎么处理?
【在 g****t 的大作中提到】 : 我多年前做的是用长整数算完,然后返回短整数。
|
l*********s 发帖数: 5409 | 10 谢谢!
【在 h**********c 的大作中提到】 : I give you an algorithm called preemptive division: (GNU license) : first use the maximum number you consider less than overflow, max divides : the first multiplier. If the result is less than the the second number you : are : goging to multiply, then there is a overflow.
|
|
|
h**********c 发帖数: 4120 | 11 c++ long long 8 bytes or bigger
or customize bit set yourself |
h**********c 发帖数: 4120 | |
b*******s 发帖数: 5216 | 13 长整数可以用多段短整数模拟吧
【在 g****t 的大作中提到】 : 我多年前做的是用长整数算完,然后返回短整数。
|
b*******s 发帖数: 5216 | 14 乘法做完反向做除法,不等于原值就是有问题
【在 l*********s 的大作中提到】 : 好像不是bignum,我问考官数值范围他说用系统的int就行,但是这样溢出肯定要处理 : 了,不知道是不是除了异常还有其他的trick?
|
l*********s 发帖数: 5409 | 15 您客气了,是我该说谢谢才对 :-)
【在 h**********c 的大作中提到】 : thks baozi
|
N******K 发帖数: 10202 | 16 异常能不要就不要 不然计算程序没法调试
【在 l*********s 的大作中提到】 : 要设计一个有理数的类,定义加法和等于。我的问题是如果我用int储存分子分母,做 : 加法时应为涉及到乘法精度很容易溢出,(a)怎么检测乘法是否溢出;(2)一般怎么 : 处理,扔异常?
|