微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 如果输入的数字不是一个完美的正方形,找到最近的完美正方形?

#include <iostream>
#include <limits>
#include <cmath>

using namespace std;

int main()
{
    int number;
    cout << "Enter the number whose sqare root needs to be calculated";
    cin >> number;
    cout << "Square root of " << number << " is " << (int)sqrt((float)number)  << " OR " << sqrt((float)number) << endl;
    if( (int)sqrt((float)number) == sqrt((float)number) )
    cout << "The number is a perfect sqaure";
    else
    cout << "The number is not a perfect square";
    //To find the nearest perfect square if the number entered
   // is not a perfect square?

    return 0;
}

我希望我所做的检查完美的方块是可以的,但此外我想
如果输入的数字不是一个完美的正方形,找出最接近完美正方形的数字
有任何想法吗

解决方法

实际上,这是更好的答案:

int number = 13;
int iRoot = static_cast<int>(sqrt(static_cast<float>(number)) + .5f);

你不需要检查ceil或其底板是否更大,做一个简单的回合就可以了.

sqrt(13)是3.6,当你添加.5强制转换为4. sqrt(12)是3.46,当你添加.5强制转换为3.(我们试图舍入,这就是我们添加.5的原因).正如你所看到的,当数字更接近更高的根时,它会给你一个大于.5的小数;当数字更接近较低值的根时,小数小于.5,就这么简单!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐