You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按自定义规则对uint与double类型值的和进行取整?

自定义取整逻辑的实现方案

核心思路

  1. 将uint类型的x转换为double,与y相加得到总和sum
  2. 分离总和的整数部分与小数部分
  3. 根据小数部分所在区间,按规则计算最终取整结果

代码示例(C语言)

#include <stdio.h>
#include <math.h>

int main() {
    unsigned int x;
    double y;
    
    // 获取用户输入
    printf("输入x(uint类型):");
    scanf("%u", &x);
    printf("输入y(double类型):");
    scanf("%lf", &y);
    
    // 计算总和
    double sum = (double)x + y;
    
    // 分离整数与小数部分
    double integer_part;
    double fractional_part = modf(sum, &integer_part);
    
    // 处理浮点数精度误差,避免存储偏差导致误判
    fractional_part = fabs(fractional_part);
    double result;
    
    if (fractional_part <= 0.25 + 1e-9) {
        result = integer_part;
    } else if (fractional_part <= 0.75 + 1e-9) {
        result = integer_part + 0.5;
    } else {
        result = integer_part + 1.0;
    }
    
    printf("最终取整结果:%.1f\n", result);
    return 0;
}

代码示例(Java语言)

import java.util.Scanner;

public class ATMRoundingLogic {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        
        System.out.print("输入x(uint类型,用int替代):");
        int x = input.nextInt();
        System.out.print("输入y(double类型):");
        double y = input.nextDouble();
        
        double sum = (double)x + y;
        double integerPart = Math.floor(sum);
        double fractionalPart = sum - integerPart;
        
        // 处理精度问题
        fractionalPart = Math.abs(fractionalPart);
        double result;
        
        if (fractionalPart <= 0.25 + 1e-9) {
            result = integerPart;
        } else if (fractionalPart <= 0.75 + 1e-9) {
            result = integerPart + 0.5;
        } else {
            result = integerPart + 1.0;
        }
        
        System.out.printf("最终取整结果:%.1f%n", result);
        input.close();
    }
}

关键说明

  • 类型转换:必须将uint转成double后再与y相加,避免整数截断问题
  • 精度处理:由于double无法精确存储所有小数(比如0.25可能被存为接近但略小的数值),判断时加入1e-9的偏差值,防止误判
  • 负数兼容:代码中用fabs处理小数部分,确保即使总和为负数(比如取款超余额)也能正确判断小数区间

内容的提问来源于stack exchange,提问作者LavidaLoca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 03:40:45