VIRTUALS

the virtual labs for the virtuals

0%

HJ7. 取近似值

摘要:
注意C++和Java强转整型的区别。

题目

描述
写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。

输入描述:
输入一个正浮点数值

输出描述:
输出该数值的近似整数值

示例1

输入:
5.5

输出:
6

强制转换

本题主要关注一下C++和Java在float转整型时的区别、
float x = 5.0;
在C++中,int y = x * 10; 即可,或者 int y = (int)x * 10;,在一个变量上强转一次,整个表达式都默认强转。
而在Java中,int y = x * 10;是错的,应该 int y = (int)(x * 10); 整个表达式放在一起强转。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
* author: etoa
* 2021-08-15 17:06:09
*/
#include <bits/stdc++.h>

using namespace std;

int main()
{
float x;
for (; cin >> x;) {
int y = x * 10;
int base = y / 10;
int remain = y % 10;
cout << (remain < 5 ? base : base + 1) << endl;
}
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/*
* author: etoa
* 2021-08-15 17:05:48
*/
import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
for (; in.hasNext();) {
float x = in.nextFloat();
int y = (int)(x * 10);
int base = y / 10;
int remain = y % 10;
System.out.println(remain < 5 ? base : base + 1);
}
}
}

原题链接: HJ7. 取近似值