【问题标题】:Number of digits after multiplication, dividing乘法、除法后的位数
【发布时间】:2014-06-19 09:58:11
【问题描述】:

我有两个数字 XY,我不知道它们的值,但我知道可以包含 的最大位数X 为 10(例如),Y 为 3(例如)

我需要知道 Z 的最大位数等于 X * YZ = X / Y

相同

【问题讨论】:

  • 这里是整数还是浮点数?
  • 对于乘法,当 X 和 Y 都为最大值时,最大位数将在那里..对于上述情况 X = 99999999999Y = 999..对于除法 X 应该是最大的,Y 是最小的...... X = 9999999999Y = 100
  • 根据您的问题,它说Z 可以拥有的最大位数是多少..所以我们必须假设XY 可以拥有的最坏情况..但是对于小数,它将无效

标签: c# math multiplication


【解决方案1】:

如果X 最多可以有n 位数,而Y 最多可以有m 位数,那么

X

这意味着

X * Y

换句话说,

X * Y 最多可以有 n + m 个数字。

对于除法,我们需要为Y 取最坏的情况——即值 1。所以X / Y 的最大位数为n

但是,如果您知道 Y 正好有 m 个数字,那么我们可以这样说

Y >= 10 ^ (m - 1)

在这种情况下,我们得到:

X / Y X / Y

这意味着当 Y 正好有 m 个数字时,X / Y 最多有 n - m + 1 个数字。

【讨论】:

    【解决方案2】:

    假设X 中的位数为nYm 并且值被四舍五入 所以

    (x*y) 的最大位数为n+m

    (x/y) 的最大位数为n-m+1

    【讨论】:

    • Y=1 不正确 - 在这种情况下 X/Y 最多可以有 n 位。
    • for Y = 1 z = n - 1 + 1 = n 我认为这是正确的
    猜你喜欢
    • 1970-01-01
    • 2014-07-21
    • 2023-01-20
    • 1970-01-01
    • 2014-08-05
    • 2021-03-13
    • 1970-01-01
    • 2015-06-12
    • 2021-07-05
    相关资源
    最近更新 更多