c# – 将double转换为int可返回意外结果
发布时间:2020-12-15 23:37:39 所属栏目:百科 来源:网络整理
导读:我想将数字转换加倍显示为int.但我很困惑.这是我的代码. private void tbxDouble_TextChanged(object sender,EventArgs e){ tbxInt.Text = Convert.ToDouble(tbxDouble.Text).ToString("F0"); tbxInt2.Text = Math.Round(Convert.ToDouble(tbxDouble.Text),0
我想将数字转换加倍显示为int.但我很困惑.这是我的代码.
private void tbxDouble_TextChanged(object sender,EventArgs e) { tbxInt.Text = Convert.ToDouble(tbxDouble.Text).ToString("F0"); tbxInt2.Text = Math.Round(Convert.ToDouble(tbxDouble.Text),0).ToString(); } 结果为100,5 => 结果为100,56 => 结果为100,49 => 为什么所有结果都不是101?这有什么问题? 解决方法
编辑:正如在评论中指出的那样 – 当我写“F0”格式化只会截断数字时,我的初始答案是错误的.正确的答案是它会圆,但它会使用其他类型的舍入称为“远离零”舍入.
我假设100,49和100,56的情况是显而易见的,所以让我们来看看100,50 首先让我们退一步:Convert.ToDouble(tbxDouble.Text)这一行从字符串转换为double,值为100.50,此时你已经完成了两次不同的舍入. 第一: value.ToString("F0"); 正在使用零舍入 第二个: Math.Round(value,0) 正在使用Bankers Rounding 银行家舍入将四舍五入到最接近的偶数 – 因此结果将为100.远离零舍入将舍入到101(101比零更“远离零”) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |