当前位置: 首页 > news >正文

闲话银行家舍入法,以及在程序中如何实现

image

前言

相信对于四舍五入的舍入法,大家都耳熟能详,但对于银行家舍入法,可能就会比较少接触了!

可是在金融界,银行家舍入法可是大名鼎鼎的主角之一,主要应用于金融领域和涉及货币计算的场合。

那么,这个银行家舍入法是什么呢?它是怎么来的?有什么规则?……

别急,请听我一一道来。

银行家舍入法的来源

银行的盈利渠道主要是利息差,它从储户手里收集资金,然后放贷出去,期间产生的利息差就是银行所获得的利润。

如果采用平常四舍五入的规则,假设采用每 10 笔存款利息计算作为模型,如下:

四舍:0.000、0.001、0.002、0.003、0.004。这些舍的都是银行赚的钱,

五入:0.005、0.006、0.007、0.008、0.009。这些入的都是银行亏的钱,

分别为:0.005、0.004、.003、0.002、0.001。

对于银行来说它的盈利应该是

0.000 + 0.001 + 0.002 + 0.003 + 0.004 - 0.005 - 0.004 - 0.003 - 0.002 - 0.001 = -0.005

从结果中可以看到每 10 笔的利息银行可能就会损失 0.005 元,千万别小看这个数字,这对于银行来说就是一笔非常大的损失。

美国银行家对金钱是最敏感的,他们首先发现了这个问题,所以他们提出这个算法,用于修正采用上面四舍五入规则而产生的误差。

银行家舍入法的规则

银行家舍入法的规则,简单地说,就是 四舍六入五成双

如何理解呢?举个例子,假设要保留两位小数,

  1. 如果第三位小数大于 5,那么进一位,比如 11.556 = 11.56
  2. 如果第三位小数小于 5,那么舍去,比如 11.554 = 11.55
  3. 如果第三位小数等于 5,并且有第四位小数,那么进一位,比如 11.5551 = 11.56
  4. 如果第三位小数等于 5,没有第四位小数,那么有两种情况:
    • 如果第二位小数是偶数,那么舍去,比如 11.545 = 11.54
    • 如果第二位小数是奇数,那么进一位,比如 11.555 = 11.56

如何在程序中实现银行家舍入法

  1. Java 内置了银行家舍入法的方法,可以直接使用 RoundingMode.HALF_EVEN 来实现,代码如下:

    import java.math.BigDecimal;
    import java.math.RoundingMode;public class Main {public static void main(String[] args) {// 假设要将 2.34567 保留两位小数double num = 2.34567;BigDecimal bd = new BigDecimal(num);BigDecimal rounded = bd.setScale(2, RoundingMode.HALF_EVEN);System.out.println("使用银行家舍入法保留两位小数:" + rounded);}
    }
    
  2. C# 也内置了银行家舍入法的方法,可以使用 Math.Round 方法结合 MidpointRounding.ToEven 参数来实现,代码如下:

    using System;class Program
    {static void Main(){// 定义一个 double 类型的数值double amount = 10.555;// 使用 Math.Round 方法进行银行家舍入法double roundedAmount = Math.Round(amount, 2, MidpointRounding.ToEven);// 输出结果Console.WriteLine($"原始数值: {amount}");Console.WriteLine($"银行家舍入后的结果: {roundedAmount}");}
    }
    

总结

这些银行家们真是精明得很啊,一点亏都不肯吃的 _

往期精彩

  1. 浅论未来 IT 和财务结合的趋势

我是老杨,一个奋斗在一线的资深研发老鸟,让我们一起聊聊技术,聊聊程序人生,共同学习,共同进步

相关文章:

闲话银行家舍入法,以及在程序中如何实现

前言 相信对于四舍五入的舍入法,大家都耳熟能详,但对于银行家舍入法,可能就会比较少接触了! 可是在金融界,银行家舍入法可是大名鼎鼎的主角之一,主要应用于金融领域和涉及货币计算的场合。 那么&#xf…...

最短路径算法(算法篇)

算法之最短路径算法 最短路径算法 概念: 考查最短路径问题,可能会输入一个赋权图(也就是边带有权的图),则一条路径的v1v2…vN的值就是对路径的边的权求和,这叫做赋权路径长,如果是无权路径长就是单纯的路径上的边数。…...

昇思25天学习打卡营第11天 | LLM原理和实践:基于MindSpore实现BERT对话情绪识别

1. 基于MindSpore实现BERT对话情绪识别 1.1 环境配置 # 实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号 !pip uninstall mindspore -y !pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore2.2…...

反向散射技术(backscatter communication)

智能反射表面辅助的反向散射通信系统研究综述(知网) 1 反向散射通信技术优势和应用场景 反向散射通信技术通过被动射频技术发送信号,不需要一定配有主动射频单元,被认为是构建绿色节能、低成本、可灵活部署的未来物联网规模化应用关键技术之一,是实现“…...

致远CopyFile文件复制漏洞

复现版本 V8.0SP2 漏洞范围 V5&G6_V6.1至V8.0SP2全系列版本、V5&G6&N_V8.1至V8.1SP2全系列版本。 漏洞复现 上传文件 POST /seeyon/ajax.do?methodajaxAction&managerNameportalCssManager&rnd57507 HTTP/1.1 Accept: */* Content-Type: applicatio…...

MySQL 创建数据库

MySQL 创建数据库 在当今的数据驱动世界中,数据库是任何应用程序的核心组成部分。MySQL,作为一个流行的开源关系数据库管理系统,因其可靠性、易用性和强大的功能而广受欢迎。本文将详细介绍如何在MySQL中创建数据库,包括基础知识和最佳实践。 什么是MySQL数据库? MySQL…...

AbyssFish单连通周期边界多孔结构2D软件

软件介绍 AbyssFish单连通周期边界多孔结构2D软件(以下简称软件)可用于生成具备周期性边界条件的单连通域多孔结构PNG图片,软件可设置生成模型的尺寸、孔隙率、孔隙尺寸、孔喉尺寸等参数,并且具备孔隙形态控制功能。 软件生成的…...

Linux驱动开发-03字符设备驱动框架搭建

一、字符设备驱动开发步骤 驱动模块的加载和卸载(将驱动编译模块,insmod加载驱动运行)字符设备注册与注销(我们的驱动实际上是去操作底层的硬件,所以需要向系统注册一个设备,告诉Linux系统,我有…...

Zynq系列FPGA实现SDI视频编解码+图像缩放+多路视频拼接,基于GTX高速接口,提供8套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本博已有的FPGA图像缩放方案本方案的无缩放应用本方案在Xilinx--Kintex系列FPGA上的应用 3、详细设计方案设计原理框图SDI 输入设备Gv8601a 均衡器GTX 解串与串化SMPTE SD/HD/3G SDI IP核BT1120转RGB自研…...

VS2019使用C#写窗体程序技巧(1)

1、打开串口 private void button1_Click(object sender, EventArgs e){myPort cmb1.Text;mybaud Convert.ToInt32(cmb2.Text, 10);databit 8;parity Parity.None;stopBit StopBits.One;textBox9.Text "2";try{sp new SerialPort(myPort, mybaud, parity, dat…...

Python爬虫-requests模块

前戏: 1.你是否在夜深人静的时候,想看一些会让你更睡不着的图片却苦于没有资源... 2.你是否在节假日出行高峰的时候,想快速抢购火车票成功..。 3.你是否在网上购物的时候,想快速且精准的定位到口碑质量最好的商品. …...

适用于PyTorch 2.0.0的Ubuntu 22.04上CUDA v11.8和cuDNN 8.7安装指南

将下面内容保存为install.bash,直接用bash执行一把梭解决 #!/bin/bash### steps #### # verify the system has a cuda-capable gpu # download and install the nvidia cuda toolkit and cudnn # setup environmental variables # verify the installation ######…...

使用conda安装openturns

目录 1. 有效方法2. 整体分析使用pip安装使用conda安装验证安装安装过程中可能遇到的问题 1. 有效方法 conda install -c conda-forge openturns2. 整体分析 OpenTURNS是一个用于概率和统计分析的软件库,主要用于不确定性量化。你可以通过以下步骤在Python环境中安…...

Chameleon:动态UI框架使用详解

文章目录 引言Chameleon框架原理核心概念工作流程 基础使用安装与配置创建基础界面 高级使用自定义组件响应式布局数据流与状态管理 结论 引言 Chameleon,作为一种动态UI框架,旨在通过灵活、高效的方式帮助开发者构建跨平台、响应用户交互的图形用户界面…...

7.10飞书一面面经

问题描述 Redis为什么快? 这个问题我遇到过,但是没有好好总结,导致答得很乱。 答:Redis基于内存操作: 传统的磁盘文件操作相比减少了IO,提高了操作的速度。 Redis高效的数据结构:Redis专门设计…...

[数据结构] 归并排序快速排序 及非递归实现

()标题:[数据结构] 归并排序&&快速排序 及非递归实现 水墨不写bug (图片来源于网络) 目录 (一)快速排序 类比递归谋划非递归 快速排序的非递归实现: (二)归并排序 归…...

面试题 12. 矩阵中的路径

矩阵中的路径 题目描述示例 题解 题目描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成&#xff0…...

钉钉扫码登录第三方

钉钉文档 实现登录第三方网站 - 钉钉开放平台 (dingtalk.com) html页面 将html放在 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>登录</title>// jquery<script src"http://code.jqu…...

多GPU系统中的CUDA设备不可用问题

我们在使用多GPU系统时遇到了CUDA设备不可用的问题&#xff0c;详细情况如下&#xff1a; 问题描述&#xff1a; 我们在一台配备有8块NVIDIA GeForce RTX 3090显卡的服务器上运行CUDA程序时&#xff0c;遇到了如下错误&#xff1a; cudaErrorDevicesUnavailable: CUDA-capabl…...

python的列表推导式

文章目录 前言一、解释列表推导式二、在这句代码中的应用三、示例四、使用 for 循环的等价代码总结 前言 看看这一行代码&#xff1a;questions [q.strip() for q in examples["question"]] &#xff0c;问题是最外层的 中括号是做什么的&#xff1f; 最外层的中括…...

Inter开源字体优化终极方案:提升300%性能的企业级字体部署架构

Inter开源字体优化终极方案&#xff1a;提升300%性能的企业级字体部署架构 【免费下载链接】inter The Inter font family 项目地址: https://gitcode.com/gh_mirrors/in/inter 在当今数字体验主导的时代&#xff0c;字体性能已成为影响用户体验和业务转化的关键因素。开…...

AI智能体集成Active Directory:统一身份管理与安全沙箱实践

1. 项目概述&#xff1a;在Active Directory中为AI智能体安家最近在折腾一个挺有意思的项目&#xff0c;叫agent-directory。简单来说&#xff0c;它能让你的AI智能体&#xff08;Agent&#xff09;像公司里的员工一样&#xff0c;在Windows Active Directory&#xff08;AD&am…...

从百元平板到AIoT:成本极致化下的电子设计哲学与职业未来

1. 从百元平板之争看电子设计的未来走向那天在门洛帕克的星巴克&#xff0c;Vivek Wadhwa迟到了几分钟&#xff0c;一坐下就带着那种即将沸腾的能量感切入正题&#xff1a;“我最近好像总在惹麻烦&#xff01;”他指的麻烦&#xff0c;是那些关于创新、关于价格、关于行业未来的…...

开源中间件IoTDM:破解物联网数据孤岛,实现异构设备统一管理

1. 项目概述&#xff1a;开源中间件如何成为物联网的“粘合剂”在物联网&#xff08;IoT&#xff09;领域摸爬滚打了十几年&#xff0c;我见过太多“数据孤岛”的困境。智能家居、工业传感器、可穿戴设备……每个设备、每个平台都像一座座信息孤岛&#xff0c;数据格式五花八门…...

ARM架构计数器-定时器寄存器原理与应用

1. ARM架构中的计数器-定时器寄存器深度解析在ARM处理器架构中&#xff0c;计数器-定时器寄存器是实现精确时间控制和事件触发的核心组件。这些寄存器不仅为操作系统提供时间基准&#xff0c;还在虚拟化、安全扩展和实时系统中扮演关键角色。本文将深入剖析CNTHCTL和CNTHP_CTL等…...

高速ADC前端变压器相位不平衡分析与优化方案

1. 宽带A/D转换器前端设计中的变压器配置挑战在高速数据采集系统中&#xff0c;变压器作为A/D转换器的前端接口器件&#xff0c;承担着信号隔离和单端转差分的关键任务。然而&#xff0c;实际工程中我们常常遇到一个棘手的问题&#xff1a;当输入信号频率超过100MHz时&#xff…...

故障诊断创新算法之【先验知识+协同学习】基于故障特征掩码引导和潜在特征拆分的自编码器机械故障诊断(PyTorch)

小样本条件下&#xff0c;纯数据驱动方法很容易陷入过拟合和特征盲目提取&#xff0c;所以提出一种物理引导的深度诊断范式&#xff1a;将轴承内圈、外圈、滚动体的故障特征频率先验显式编码为故障特征掩码&#xff0c;并引入Huber函数构建先验引导损失&#xff0c;迫使网络学习…...

AXI4协议实战:从零构建一个支持突发传输的从机接口

1. AXI4协议基础与从机接口设计概述 AXI4协议作为AMBA总线家族中最核心的成员&#xff0c;已经成为现代SoC设计中事实上的标准互联规范。我第一次接触AXI4是在2015年设计图像处理芯片时&#xff0c;当时为了连接DMA控制器和DDR控制器&#xff0c;不得不硬着头皮研究这个看似复杂…...

Next.js App Router与React Server Components实战:构建高性能Hacker News克隆

1. 项目概述&#xff1a;一个基于 Next.js App Router 与 React Server Components 的 Hacker News 克隆 如果你和我一样&#xff0c;在过去几年里一直在用 Next.js 的 Pages Router 构建应用&#xff0c;那么当 App Router 和 React Server Components 这两个概念一起出现时&…...

通过curl命令直接测试Taotoken聊天接口的配置与排错指南

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过curl命令直接测试Taotoken聊天接口的配置与排错指南 基础教程类&#xff0c;为需要在无SDK环境或快速验证接口的开发者提供指导…...