double型强转int型--向下取整;+0.5实现四舍五入

本文展示了一个简单的Java程序,该程序演示了不同数值类型之间的转换,并通过自定义方法进行四舍五入处理。主要涉及double和float类型的转换为整型,以及自定义方法的实现。
public class test2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		double a = 100.1;
		double b = 100.5;
		float c = 100.1f;
		float d = 100.5f;
		System.out.println((int)a);
		System.out.println((int)b);
		System.out.println(get(a));
		System.out.println(get(b));
		System.out.println(get(c));
		System.out.println(get(d));
	}

	private static int get(double n){
		return (int) (n+0.5);
	}
}

#include <iostream> #include <cstdio> // #include <cmath> using namespace std; //错误答案 // int main(){ // double N; // cin >> N; // double moneys[12] = {100.00,50.00,20.00,10.00,5.00,2.00,1.00,0.50,0.25,0.10,0.05,0.01}; // bool flag1 = 1; // bool flag2 = 1; // printf("NOTAS:\n"); // for (int i = 0;i < 6;i ++){ // printf("%d nota(s) de R$ %.2lf\n",(int)(N/moneys[i]),moneys[i]); // // N %= moneys[i]; 坑1:浮点数不能用%,只可整数,无符号整数使用 // N = fmod(N,moneys[i]); // } // printf("MOEDAS:\n"); // for (int i = 6;i < 12;i ++){ // printf("%d moeda(s) de R$ %.2lf\n",(int)(N/moneys[i]),moneys[i]); // N = fmod(N,moneys[i]); // } // return 0; // } // 坑2:上面做法错误原因——浮点数表示不准确(因为某些十进制小数在计算机二进制表示为 // 循环小数,而二进制只能用有限位的数字表述,所以最终只能用极其近似的二进制表示),和 // 因为浮点数表示不准确进而导致的舍入误差(由于只能用极其近似的二进制表示,故浮点数进 // 行运算时,只能算出非常近似于预期值的结果) // 解决办法:把需要运算的浮点数同乘以n+0.5,整数再运算,避开舍入误差,最后再/n // 正确答案 int main() { double N; cin >> N; int amount = (int)(N * 100 +0.5); int moneys[12] = {10000,5000,2000,1000,500,200,100,50,25,10,5,1}; printf("NOTAS:\n"); for (int i = 0; i < 6; i++) { printf("%d nota(s) de R$ %.2lf\n", amount / moneys[i], moneys[i] / 100.0); amount %= moneys[i]; // 使用整数的取余 } printf("MOEDAS:\n"); for (int i = 6; i < 12; i++) { printf("%d moeda(s) de R$ %.2lf\n", amount / moneys[i], moneys[i] / 100.0); amount %= moneys[i]; } return 0; }翻译成python代码
03-26
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

obession

觉得有用可以打赏咖啡一杯~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值