i=mod(k*0.618,n)是取整还是四舍五入?

扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
LabVIEW中用公式节点做取整是四舍五入,有什么办法不四舍五入呢?int ge,shi,bai,sum,temp=0;bai=n/100;shi=(n/10)%10;ge=n%10;sum=(bai*bai*bai)+(shi*shi*shi)+(ge*ge*ge);if(sum==n)& temp=
妆雪雪°DqPg
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
应该说五舍六入,可能是LabVIEW的C编译器的问题将程序改为:ge=n%10;shi=((n%100)-ge)/10;bai=(n-(n%100))/100;在算高位时先将低位的减掉就行了
为您推荐:
其他类似问题
扫描下载二维码16757人阅读
Java(11)
import java.math.BigD&
import java.text.DecimalF
public class TestGetInt{&
&& public static void main(String[] args){&
&& double i=2, j=2.1, k=2.5, m=2.9;&
&& System.out.println(&舍掉小数取整:Math.floor(2)=& + (int)Math.floor(i));&
&& System.out.println(&舍掉小数取整:Math.floor(2.1)=& + (int)Math.floor(j));&
&& System.out.println(&舍掉小数取整:Math.floor(2.5)=& + (int)Math.floor(k));&
&& System.out.println(&舍掉小数取整:Math.floor(2.9)=& + (int)Math.floor(m));&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&& /* 这段被注释的代码不能正确的实现四舍五入取整&
&& System.out.println(&四舍五入取整:Math.rint(2)=& + (int)Math.rint(i));&
&& System.out.println(&四舍五入取整:Math.rint(2.1)=& + (int)Math.rint(j));&
&& System.out.println(&四舍五入取整:Math.rint(2.5)=& + (int)Math.rint(k));&
&& System.out.println(&四舍五入取整:Math.rint(2.9)=& + (int)Math.rint(m));&
&& System.out.println(&四舍五入取整:(2)=& + new DecimalFormat(&0&).format(i));&
&& System.out.println(&四舍五入取整:(2.1)=& + new DecimalFormat(&0&).format(i));&
&& System.out.println(&四舍五入取整:(2.5)=& + new DecimalFormat(&0&).format(i));&
&& System.out.println(&四舍五入取整:(2.9)=& + new DecimalFormat(&0&).format(i));&
&& System.out.println(&四舍五入取整:(2)=& + new BigDecimal(&2&).setScale(0, BigDecimal.ROUND_HALF_UP));&
&& System.out.println(&四舍五入取整:(2.1)=& + new BigDecimal(&2.1&).setScale(0, BigDecimal.ROUND_HALF_UP));&
&& System.out.println(&四舍五入取整:(2.5)=& + new BigDecimal(&2.5&).setScale(0, BigDecimal.ROUND_HALF_UP));&
&& System.out.println(&四舍五入取整:(2.9)=& + new BigDecimal(&2.9&).setScale(0, BigDecimal.ROUND_HALF_UP));
&& System.out.println(&凑整:Math.ceil(2)=& + (int)Math.ceil(i));&
&& System.out.println(&凑整:Math.ceil(2.1)=& + (int)Math.ceil(j));&
&& System.out.println(&凑整:Math.ceil(2.5)=& + (int)Math.ceil(k));&
&& System.out.println(&凑整:Math.ceil(2.9)=& + (int)Math.ceil(m));
&& System.out.println(&舍掉小数取整:Math.floor(-2)=& + (int)Math.floor(-i));&
&& System.out.println(&舍掉小数取整:Math.floor(-2.1)=& + (int)Math.floor(-j));&
&& System.out.println(&舍掉小数取整:Math.floor(-2.5)=& + (int)Math.floor(-k));&
&& System.out.println(&舍掉小数取整:Math.floor(-2.9)=& + (int)Math.floor(-m));&
&& System.out.println(&四舍五入取整:(-2)=& + new BigDecimal(&-2&).setScale(0, BigDecimal.ROUND_HALF_UP));&
&& System.out.println(&四舍五入取整:(-2.1)=& + new BigDecimal(&-2.1&).setScale(0, BigDecimal.ROUND_HALF_UP));&
&& System.out.println(&四舍五入取整:(-2.5)=& + new BigDecimal(&-2.5&).setScale(0, BigDecimal.ROUND_HALF_UP));&
&& System.out.println(&四舍五入取整:(-2.9)=& + new BigDecimal(&-2.9&).setScale(0, BigDecimal.ROUND_HALF_UP));
&& System.out.println(&凑整:Math.ceil(-2)=& + (int)Math.ceil(-i));&
&& System.out.println(&凑整:Math.ceil(-2.1)=& + (int)Math.ceil(-j));&
&& System.out.println(&凑整:Math.ceil(-2.5)=& + (int)Math.ceil(-k));&
&& System.out.println(&凑整:Math.ceil(-2.9)=& + (int)Math.ceil(-m));&
//_____________________________
舍掉小?取整:Math.floor(2)=2
舍掉小?取整:Math.floor(2.1)=2
舍掉小?取整:Math.floor(2.5)=2
舍掉小?取整:Math.floor(2.9)=2
四舍五入取整:(2)=2
四舍五入取整:(2.1)=2
四舍五入取整:(2.5)=3
四舍五入取整:(2.9)=3
?整:Math.ceil(2)=2
?整:Math.ceil(2.1)=3
?整:Math.ceil(2.5)=3
?整:Math.ceil(2.9)=3
舍掉小?取整:Math.floor(-2)=-2
舍掉小?取整:Math.floor(-2.1)=-3
舍掉小?取整:Math.floor(-2.5)=-3
舍掉小?取整:Math.floor(-2.9)=-3
四舍五入取整:(-2)=-2
四舍五入取整:(-2.1)=-2
四舍五入取整:(-2.5)=-3
四舍五入取整:(-2.9)=-3
?整:Math.ceil(-2)=-2
?整:Math.ceil(-2.1)=-2
?整:Math.ceil(-2.5)=-2
?整:Math.ceil(-2.9)=-2
===================================================
&&&&&&& BigDecimal b = new BigDecimal(9.655 );
&&&&&&& //double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
&&&&&&& double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
&&&&&&& System.out.println(&f1=& + f1);//f1=9.65
&&&&&&& BigDecimal mData = new BigDecimal(&9.655&).setScale(2, BigDecimal.ROUND_HALF_UP);
&&&&&&& System.out.println(&mData=& + mData);//mData=9.66
public BigDecimal(double val)
将&double&转换为&BigDecimal,后者是&double&的二进制浮点值准确的十进制表示形式。返回的&BigDecimal&的标度是使&(10scale&×
val)&为整数的最小值。
此构造方法的结果有一定的不可预知性。有人可能认为在 Java 中写入&new BigDecimal(0.1)&所创建的&BigDecimal&正好等于
0.1(非标度值 1,其标度为 1),但是它实际上等于 0.1015625。这是因为 0.1 无法准确地表示为&double(或者说对于该情况,不能表示为任何有限长度的二进制小数)。这样,传入&到构造方法的值不会正好等于
0.1(虽然表面上等于该值)。另一方面,String&构造方法是完全可预知的:写入&new BigDecimal(&0.1&)&将创建一个&BigDecimal,它正好&等于预期的
0.1。因此,比较而言,通常建议优先使用。当&double&必须用作&BigDecimal&的源时,请注意,此构造方法提供了一个准确转换;它不提供与以下操作相同的结果:先使用&&方法,然后使用&&构造方法,将&double&转换为&String。要获取该结果,请使用&static&&方法。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:119236次
积分:1356
积分:1356
排名:千里之外
原创:19篇
转载:25篇
评论:19条
(4)(1)(1)(2)(2)(1)(2)(9)(2)(1)(1)(7)(7)(2)(2)double d1 = Math.Round(1.25, 1);//1.2double d2 = Math.Round(1.24, 1);//1.2double d3 = Math.Round(1.26, 1);//1.3double d4 = Math.Round(1.35, 1);//1.4
为了用C#来实现&四舍五入&,我写了下面的函数:
/// &summary&
/// 实现数据的四舍五入法   /// &/summary&
/// &param name="v"&要进行处理的数据&/param&
/// &param name="x"&保留的小数位数&/param&
/// &returns&四舍五入后的结果&/returns&
private double Round(double v, int x)
bool isNegative = false;
//如果是负数
if (v & 0)
isNegative = true;
int IValue = 1;
for (int i = 1; i &= i++)
IValue = IValue * 10;
Int = Math.Round(v * IValue + 0.5, 0);
v = Int / IV
if (isNegative)
经过简单的测试,上面的函数能实现对数据的四舍五入法。
Math.Round&()在四舍五入时有个问题:&&&Math.Round(2.5,0)&=&2;&&&Math.Round(3.5,0)&=&4;2.5应该等于3才对!在ASP中也存在这个问题,不过ASP中还有个FormatNumber可以用,但目前还不知道怎么使用?解释:Math.Round()准确的说,这个函数不是四舍五入,而是四舍六入五凑偶,就是说小于4或大于6的该舍该入是没有争议的,而5处在正中间,如果四舍五入则会造成数据的整体偏差,所以采取的原则是:如果舍入位为5,则舍入后最后一位为偶数,这是国际惯例。现在做的项目都要5入,解决方法:目前做法是:&如:(3.45*10+0.5)取整,再除以10C#&中没有四舍五入函数,事实上我知道的程序语言都没有四舍五入函数,因为四舍五入算法不科学,国际通行的是&Banker&舍入法&Banker&'s&rounding(银行家舍入)算法,即四舍六入五取偶。事实上这也是&IEEE&规定的舍入标准。因此所有符合&IEEE&标准的语言都应该是采用这一算法的&Math.Round&方法默认的也是&Banker&舍入法&在&.NET&2.0&中&Math.Round&方法有几个重载方法&Math.Round(Decimal,&MidpointRounding)&Math.Round(Double,&MidpointRounding)&Math.Round(Decimal,&Int32,&MidpointRounding)&Math.Round(Double,&Int32,&MidpointRounding)&将小数值舍入到指定精度。MidpointRounding&参数,指定当一个值正好处于另两个数中间时如何舍入这个值&该参数是个&MidpointRounding&枚举&此枚举有两个成员:AwayFromZero&当一个数字是其他两个数字的中间值时,会将其舍入为两个值中绝对值较大的值。&ToEven&当一个数字是其他两个数字的中间值时,会将其舍入为最接近的偶数。&所以,要实现四舍五入函数,对于正数,可以加一个&MidpointRounding.AwayFromZero&参数指定当一个数字是其他两个数字的中间值时其舍入为两个值中绝对值较大的值,例:&Math.Round(3.45,&2,&MidpointRounding.AwayFromZero)&不过对于负数上面的方法就又不对了&因此需要自己写个函数来处理&double&ChinaRound(double&value,&int&decimals)&{&  if&(value&&&0)&  {&    return&Math.Round(value&+&5&/&Math.Pow(10,&decimals&+&1),&decimals,&MidpointRounding.AwayFromZero);&  }&  else&  {&    return&Math.Round(value,&decimals,&MidpointRounding.AwayFromZero);&  }&}&有些时候不一定要用四舍五入的,可能需要上取整或下取整:Math.Ceiling()和Math.Floor&Math.Ceiling(3.1)=4;&&&&Math.Floor(3.9)=3;取天板值与地板值,与"四舍五入"无关。其实Floor的结果与(int)相同,因此也可以这样写Math.Floor((double)2/3+0.5)floor&和&ceil是math&unit&里的函数,使用前要先&Uses&Math。trunc&和&round&是system&unit&里的函数,缺省就可以用。floor&直接往小的取,比如&floor(-123.55)=-124,floor(123.55)=123trunc&直接切下整数,比如&trunc(-123.55)=-123,&floor(123.55)=123ceil&直接往大的取,比如&ceil(-123.55)=-123,&ceil(123.55)=124round&计算四舍五入,比如&round(-123.55)=-124,round(123.55)=124C#取整函数向上取整实例int&a&=&5;&
int&b&=&2;&&&
lbl.Text&=&Convert.ToString(Math.Ceiling((double)a&/&(double)b));&}

我要回帖

更多关于 i mod 2 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信