C/C++ 实现正负数四舍五入

首先我们来看看 (int) 强制类型转换:

#include <stdio.h>
#include <stdlib.h>

int main(){
	int a = (int)(-1.9);
	int b = (int)(1.9);
	printf("%d\n%d\n", a, b);
	return 0;
}

int 是将数值绝对值的小数部分去掉,再取同样的正负号。所以根据输入浮点数的正负性,可以得到四舍五入函数:

int func(float x)
{
	if(x > 0.0)
	  return (int)(x + 0.5);
	else
	  return (int)(x - 0.5);
} 
时间: 2024-08-26 20:21:07

C/C++ 实现正负数四舍五入的相关文章

java中的移位运算符与正负数转换

移位 java 中有对 二进制移动分为 左移(<<) 和右移(>>) 其中右移还分为 有符号右移(>>) 和无符号右移(>>>) 1.有符号右移:将二进制向右移动 如果原来符号位为0 则新符号位也用0 否则用1; 2.无符号右移:将二进制向右移动 不管原来的符号位是0还是1 一律用0 补位; 正负数转换 举个例子: 3的二进制 用一个字节表示 0000 0011 正常一个负数的变现方式是:其正数按位取反再加1 0000 0011 取反:1111 110

一个未排序整数数组,有正负数,重新排列使负数排在正数前面,并且要求不改变原来的 相对顺序 比如: input: 1,7,-5,9,-12,15 ans: -5,-12,1,7,9,15 要求时间复杂度O(N),空间O(1) 。

#include <iostream> using namespace std; void mSort(int *arr, int iLen) { int i, j, k, tmp; for(i = 0, j = 0; i < iLen; i++) { if (arr[i] < 0) { tmp = arr[i]; for(k = i; k > j; k--) arr[k] = arr[k - 1]; arr[j++] = tmp; } } } int main() { in

判断正负数

#!/usr/bin/env python # -*- coding: UTF-8 -*- # # Copyright [Gtlions Lai]. # Create Date: # Update Date: __authors__ = '"Gtlions Lai" <[email protected]>' """判断正负数. 主要功能描述. ClassFoo: 类概述. functionBar(): 函数概述. ""&qu

某数组里存在乱序的正负数字,要求将负数放到左边,正数放到右边,并且正负数的相对位置不改变

先说下思路: 1.先遍历数组,将正负数的个数求出来,当然,如果存在零值,也需要求出个数来 2.根据之前求出的个数分别申请两个数组,用来存放正负数 3.再次遍历数组,将正负数放进第二步申请的两个数组中,零值需要排除在外 4.将第三步得到的两个数组再填回原始数组(也可以再申请一个数组存放结果) 完成! 以下是代码(vs2013,64位win8): 1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 //定义一个原始数组

实现正负数区分#跳转指令

题目要求大意: 在数据段指定一组数据,对该组数据进行:正负分类,分别记下两类的绝对值之和与个数只和 参考代码: include irvine32.inc .data arr dd 0,-1,1,-2,2,-3,3 count dd ($-arr)/4 sum1 dd 0 sum2 dd 0 cou1 dd 0 cou2 dd 0 I dd -1 ;1表示正记录,2表示负记录 .code main PROC lea esi,arr mov ecx,0 ;把每个数据取出 lop: mov ebx,[

数据结构-实现正负数重新排序

//直接上代码: 1 /// <summary> 2 /// 实现正负数重新排序 3 /// </summary> 4 /// <param name="arr"></param> 5 public static void ZhengfuSort(int[] arr) 6 { 7 List<int> list = new List<int>(); 8 foreach(var item in arr) 9 { 10

TCP通信实现对接硬件发送与接收十六进制数据 &amp; int与byte的转换原理 &amp; java中正负数的表示

今天收到的一份需求任务是对接硬件,TCP通信,并给出通信端口与数据包格式,如下: 1.首先编写了一个简单的十六进制转byte[]数组与byte[]转换16进制字符串的两个方法,如下: /** * 将十六进制的字符串转换成字节数组 * * @param hexString * @return */ public static byte[] hexStrToByteArrs(String hexString) { if (StringUtils.isEmpty(hexString)) { retur

Int32 最大的数值是多少???(附十进制十六进制相互转换且包含正负数的java代码)

正数转二进制很简单,转十六进制也很简单. 那么负数的情况下呢?在计算机中无法识别你给的符号"+","-",计算机只认识0和1 那么在二进制中如何表示负数. 先简单介绍一下负数如何转二进制,八进制,十六进制: 比如给的是-4 那么先算出+4的二进制表示: 1 0 0 但是请记住我们需要在前面补0,因为在计算机中一个Int32为的数字是一个长度为32的内存空间,计算机眼里 0000 0000 0000 0000 0000 0000 0000 0100  才是4,这是源码

正负数的源码 反码 补码 转

首先提几个概念: 原码,反码,补码 原码是什么? 原码就是早期用来表示数字的一种方式: 一个正数,转换为二进制位就是这个正数的原码.负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码 举例说明: int类型的 3 的原码是 11B(B表示二进制位), 在32位机器上占四个字节,那么高位补零就得: 00000000 00000000 00000000 00000011 int类型的 -3 的绝对值的二进制位就是上面的 11B 展开后高位补零就得: 10000000 00000000 000