题解|HJ7 取近似值

取近似值

https://www.nowcoder.com/practice/3ab09737afb645cc82c35d56a5ce802a?tpId=37&rp=1&ru=%2Fta%2Fhuawei&qru=%2Fta%2Fhuawei%2Fquestion-ranking&gioEnter=menu

题目链接|取近似值

写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 0.50.5 ,向上取整;小于 0.50.5 ,则向下取整。数据范围:保证输入的数字在 3232 位浮点数范围内

方法一:利用语言特性求解,输入加上0.5后取整

如果小数点后的数值大于0.50.5,那么加上0.50.5后比原数字+1+1大,取整后为原数的整数部分+1+1,即上整数;如果小数点后的数值大于0.50.5,由于c/c++的取整操作是取下整,所以取整后为原数字的整数部分。 时间复杂度: O(1)O(1),空间复杂度 O(1)O(1).

#include <cstdio>
#include <iostream>
using namespace std;
int main(void){
    double num;
    cin >> num;
    int ans = (int)(num + 0.5); //c/c++取整是向下取证,
    printf("%d", ans);
    return 0;
}

alt

方法二:对输入的浮点数的小数点后的第一位进行判断

截取输入的浮点数的小数点后的第一位进行判断。时间复杂度: O(1)O(1),空间复杂度 O(1)O(1).

alt

#include <cstdio>
#include <iostream>
using namespace std;
int main() {
    float num;
    cin >> num;
    int n = (int) num ;
    int dec = (int)(num * 10) % 10;
    if (dec >= 5) {
        n = n + 1;
    }
    printf("%d\n",n);
    return 0;
}
全部评论

相关推荐

永不遗忘:才这么点算什么拉黑,我初筛连着挂几十次了,最后还是能进面
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务