关于四舍五入

用 int 的强制转换是直接取下面一个整数,不论是不是 四舍五入。。。

自己写了一个round四舍五入模板:

四舍五入代码模板:

#include <stdio.h>

int round(double a)
{
	if(a-(int)(a)>=0.5)
		return (int)(a)+1;

	else
		return (int)(a);
}

int main()
{
	double a;
	int result;

	while(scanf("%lf",&a)!=EOF)
	{
		result=round(a);
		printf("after round:%d\n",result);
	}

	return 0;
}

运行结果为:

测试代码之一:

#include <stdio.h>

int main()
{
	printf("5 * 1.5 = %d\n",(int)(5*1.5));
	printf("4 * 2.1 = %d\n",(int)(4*2.1));

	return 0;
}

运行结果是:

7

8

这说明:

(int)强转只能取下一个整数。。。7.5取7;8.4也只取8

测试代码之二:

#include <stdio.h>

int main()
{
	double a=2.5;
	printf("%d\n",(int)(a*4));

	if((a*4)==10)
		printf("YES\n");

	else
		printf("NO\n");

	return 0;
}

运行结果是:

10

YES

这说明:

double 型可以和 int 型比较,10.0 == 10    //OK

时间: 2024-09-15 01:25:29

关于四舍五入的相关文章

PHP四舍五入精确小数位及取整

  (1)php保留三位小数并且四舍五入  代码如下   $num=0.0215489; echo sprintf("%.3f", $num); // 0.022 (2)php保留三位小数不四舍五入  代码如下   $num=0.0215489; echo substr(sprintf("%.4f", $num),0,-1); // 0.021 (3)php进一法取整数(这个在分页程序的页数程序里面会用到)  代码如下   echo ceil(4.3);    //

android-Android四舍五入float类型问题

问题描述 Android四舍五入float类型问题 我的测试结果不一样: public void testRoundFloat() { final NumberFormat format = NumberFormat.getNumberInstance(); format.setMaximumFractionDigits(2); format.setMinimumFractionDigits(2); format.setRoundingMode(RoundingMode.HALF_UP); as

PHP四舍五入精确小数位及取整的方法

本篇文章将使用php对数字进行四舍五入保留N位小数,以及使用php对数字进行取整的方法做个小总结. (1)php保留三位小数并且四舍五入 $num=0.0215489; echo sprintf("%.3f", $num); // 0.022 (2)php保留三位小数不四舍五入 $num=0.0215489; echo substr(sprintf("%.4f", $num),0,-1); // 0.021 (3)php进一法取整数(这个在分页程序的页数程序里面会用

用Round函数让四舍五入变的更精确

在前面,我们介绍了,利用INT函数来构造四舍五入函数的方法,但是,有时候我们会遇到更多小数位的四舍五入,用INT函数构造就会有些吃力了,Excel的Round函数可以帮助我们.Round函数的作用是返回某个数字按指定位数取整后的数字.语法为"ROUND(number,num_digits)",其中Number是需要进行四舍五入的数字;Num_digits为指定的位数,按此位数进行四舍五入,如果 num_digits 大于 0,则四舍五入到指定的小数位,如果 num_digits 等于

在业务系统中处理小数精度, 四舍五入,全舍弃,全进位的方法

在业务系统中,不同的客户对小数的处理有不同的方法 通过在设置保留的小数位数,以及小数位数以后的尾数的处理方法,可以灵活的满足客户要求 处理方法表  ID NUMBER(1)    ,                                                       --设置ID AMOUNTDOT      NUMBER(4,2) DEFAULT 0.01,  --金额精确度 1: 精确到元  0.1:精确到角  0.01:精确到分ROUNDING       NUMB

JS四舍五入函数

实现如下效果:比如:总价为:5000000 , 面积为:300,结果:16666.666666666668 那么我希望能四舍五入为: 16700总价为:1000000 , 面积为:300,结果:3333.3333333333335 那么我希望能四舍五入为: 3300 以下是HTML网页特效代码,点击运行按钮可查看效果: [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

为什么用ROUND四舍五入总是无法得到正确数值?

为什么用ROUND四舍五入总是无法得到正确数值?作者:cg1  摘自:access911.net问题: 为什么用ROUND四舍五入总是无法得到正确数值?比如round(11.115,2) 竟然会等于  1.11 而不是 1.12 又比如:我在Access查询中写了以下语句:SELECT Round(0.005, 2) as ID;结果不是我期望的0.01,而是0,如果想得到0.01,应该怎样做?   回答: 原因很简单,在进行精确计算时应该使用"货币"类型字段而不是常用得"数

php中的四舍五入

比如我有0.10456,要变成10.5%? round(PHP 3, PHP 4 )round -- 对浮点数进行四舍五入说明float round ( float val [, int precision])返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果.precision 也可以是负数或零(默认值). 注意 PHP 默认不能正确处理类似 "12,300.2" 的字符串.见字符串转换为数值. echo round(3.4); // 3e

UVa 10137 The Trip:小数四舍五入&amp;amp;需要注意的地方

10137 - The Trip Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=29&page=show_problem&problem=1078 A number of students are members of a club that travels annually to exotic locations

asp.net小数点四舍五入的方法

1.只要求保留N位不四舍5入 float f = 0.55555f:int i =(int)(f * 100):f = (float)(i*1.0)/100: 2.保留N位,四舍五入 . decimal d= decimal.Round(decimal.Parse("0.55555"),2): 3.保留N位四舍五入 Math.Round(0.55555,2) 4,保留N位四舍五入 double dbdata = 0.55555:string str1 = dbdata.ToString