首页 > 试题广场 >

取近似值

[编程题]取近似值
  • 热度指数:574636 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 0.5 ,向上取整;小于 0.5 ,则向下取整。

数据范围:保证输入的数字在 32 位浮点数范围内

输入描述:

输入一个正浮点数值



输出描述:

输出该数值的近似整数值

示例1

输入

5.5

输出

6

说明

0.5>=0.5,所以5.5需要向上取整为6   
示例2

输入

2.499

输出

2

说明

0.499<0.5,2.499向下取整为2   
package main

import (
	"fmt"
)

func main() {
	var num float32
    fmt.Scanf("%f", &num)
    numInt := toInt(num)
    fmt.Println(numInt)
}

func toInt(n float32) int {
	num := n * 10
	a := int(num)
	if a-5 < a/10 {
		return a/10
	}
	return a/10 + 1
}

发表于 2023-12-19 15:36:41 回复(0)
笨比办法
package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    input := bufio.NewScanner(os.Stdin)
    input.Scan()
    s := input.Text()
    var ans int
    for i := range s {
        if s[i] != '.' {
            ans *= 10
            ans += int(s[i] - '0')
        } else {
            if s[i+1] >= '5' {
                ans++
            }
            break
        }
    }
    fmt.Println(ans)
}


发表于 2023-09-15 15:48:52 回复(0)
package main

import (
    "fmt"
    // "bufio"
    // "os"
    // "strconv"
)

func main() {
    var num float32
    fmt.Scanf("%f", &num)
    if num-float32(int(num))<0.5 {
        fmt.Println(int(num))
    }else{
        fmt.Println(int(num)+1)
    }

}

发表于 2023-02-09 17:36:04 回复(0)
package main

import "fmt"
import "strconv"

func main() {
	var str string
	fmt.Scan(&str)
	index := 0
	nStr := ""
	for i := 0; i < len(str); i++ {
		if str[i] == '.' {
			index = i
			break
		}
		nStr += string(str[i])
	}
	n, _ := strconv.Atoi(nStr)
	if str[index+1] >= '5' {
		fmt.Print(n + 1)
	} else {
		fmt.Print(n)
	}
}

发表于 2022-08-12 14:16:11 回复(0)
package main

import "fmt"

func main(){
    var num float32
    fmt.Scan(&num)
    count := int(num / 0.5)
    if count % 2 == 0{
        fmt.Println(int(num))
    }else{
        fmt.Println(int(num + float32(1)))
    }
}

发表于 2022-05-11 10:11:57 回复(0)
package main

import(
    "fmt"
)

func main() {
    var input float32
    fmt.Scanf("%f", &input)

    var n int
    var i float32
    for i = 0; ; i++ {
        if input - i >= 1 {
            n++
            continue
        }
        break
    }
    if input - i >= 0.5 {
        n = n + 1
    }
    fmt.Println(n)
}
发表于 2022-03-15 11:25:43 回复(0)
package main

import (
    "math"
    "fmt"
)

func main() {
    var number float64
    _, err := fmt.Scan(&number)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(math.Round(number))
}
好像没人用math包,不知道可不可以用math包啊。
发表于 2022-02-25 12:58:53 回复(0)
package main

import(
    "fmt"
)

func main(){
    var num float32
    fmt.Scanln(&num)
    
    res := int(num * 10)
    
    if res % 10 >= 5{
        fmt.Println(res/10 + 1)
    }else{
        fmt.Println(res/10)
    }
}

发表于 2022-01-29 23:38:41 回复(0)
package main

import (
	"fmt"
)

func main() {
    var num float32
    fmt.Scanf("%f", &num)
    n := int(num)
    b := int(num * 10) % 10
    if b >= 5 {
        n += 1
    }
    fmt.Println(n)
}

发表于 2022-01-22 22:08:58 回复(0)
package main

import (
    "fmt"
)

func main() {
    var res float32
    fmt.Scan(&res)
    fmt.Println(int(res+0.5))
}

发表于 2021-10-20 17:48:58 回复(0)
package main

import (
    "fmt"
    "strings"
    "strconv"
)

func main() {
    var in string
    
    fmt.Scan(&in)
    part := strings.Split(in,".")
    
    re,_ := strconv.Atoi(part[0])
    greater,_ := strconv.Atoi(string(part[1][0]))
    if greater >= 5 {
        fmt.Println(re +1 )
    } else {
        fmt.Println(re)
    }
}
发表于 2021-07-31 17:58:54 回复(0)
package main
import (
    "fmt"
)
func main() {
    var f float64
    _, _ = fmt.Scan(&f)
    if f - float64(int(f)) < 0.5 {
        fmt.Println(int(f))
    } else {
        fmt.Println(int(f)+1)
    }
}
发表于 2021-07-29 00:16:27 回复(0)

问题信息

难度:
12条回答 73764浏览

热门推荐

通过挑战的用户

查看代码