LeetCode 69 - 为什么 int(2.0) 等于 1?

问题描述 投票:0回答:2

我的代码如下:

import math
class Solution(object):
    def mySqrt(self, x):
        """
        :type x: int
        :rtype: int
        """
        if x == 0: return 0

        res = pow(math.e, 0.5 * math.log(x))
        print(res)

        return int(res)

这是基于以下想法:image

当测试用例为

4
时,预计会输出
2
,但它会返回
1

我检查了

res
的值,即
2.0

那么这里有什么问题呢?

python-3.x int
2个回答
0
投票

如果你

print(repr(res))
你会发现
res = 1.9999999999999998
int
确实是
1

如果适合您的用例,您可以

return ruound(res)
(有round
文档)。

如果您对整数平方根感兴趣,那么只有这篇维基百科文章可能对您感兴趣。


0
投票
class Solution {
     public int mySqrt(int x) {
          long i = 0;
          long j = x;
          int mid = 0;
          if (x == 0) {
              return 0;
          }
          if (x == 1) {
              return 1;
          }
          while (i <= j) {
              mid = (int)(i + j)/2;
              if (x/mid == mid) {
                  return (int)mid;
              } else if (x/mid > mid) {
                  i = mid + 1;
              } else if (x/mid < mid) {
                  j = mid - 1;
              }
          }
          return (int)j;
          }

  }

在 Leetcode 上使用 Java 格式尝试此代码,您将通过...

© www.soinside.com 2019 - 2024. All rights reserved.