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

Java实现提取double类型数值小数点后前三位数字

问题:提取double数值小数点后前三位数字

我刚学了截断、数值类型转换、取模运算这些基础数学和Java操作,现在要实现两个需求:

  • 输入一个double类型数值,提取并输出小数点后的前三位数字,比如输入234.555输出555,输入253.6324673输出632
  • 另一种输出格式要求数字间用空格分隔,比如输入67.3424输出3 4 2

已有Java输入框架,需要补充提取逻辑的代码:

import java.util.Scanner;

class U1_L6_Activity_Three 
{
  public static void main(String[] args) 
  {
    Scanner scanner = new Scanner(System.in); //new scanner
    System.out.println("Please input a decimal number: "); //prompts user to input decimal number
//all the math stuff that i dont know how to do
  }
}

解决方案

用已学知识点实现的核心步骤

  1. 分离小数部分:用取模运算input % 1,直接得到输入值的纯小数部分(比如234.555%1=0.555)
  2. 放大转换为整数:把小数部分乘以1000,让前三位小数变成整数部分(0.555*1000=555.0)
  3. 截断取整:通过强制类型转换为int,自动截断掉后面的小数,得到前三位数字组成的整数
  4. 拆分输出空格分隔格式:用除法和取模拆分整数的每一位,再用空格拼接输出

完整实现代码

import java.util.Scanner;

class U1_L6_Activity_Three 
{
  public static void main(String[] args) 
  {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Please input a decimal number: ");
    double input = scanner.nextDouble();
    
    // 1. 取模分离小数部分
    double decimalPart = input % 1;
    // 2. 放大后强制类型转换(截断)得到前三位数字的整数
    int threeDigits = (int)(decimalPart * 1000);
    
    // 输出第一种格式:连写的三位数字
    System.out.println("Truncated three digits: " + threeDigits);
    
    // 拆分数字,准备空格分隔输出
    int first = threeDigits / 100;    // 取百位数字
    int second = (threeDigits / 10) % 10; // 取十位数字
    int third = threeDigits % 10;     // 取个位数字
    // 输出第二种格式:空格分隔
    System.out.println("Digits with spaces: " + first + " " + second + " " + third);
    
    scanner.close();
  }
}

关键代码说明

  • input % 1:利用取模运算直接剥离整数部分,只保留小数,是你学过的取模运算的典型用法
  • (int)(decimalPart * 1000):强制类型转换为int时会自动截断小数部分,就是你学的截断操作,刚好保留前三位小数对应的整数
  • 拆分数字时,threeDigits / 100通过整数除法得到百位,(threeDigits /10)%10先取前两位再取模得到十位,threeDigits%10直接取模得到个位,全程用了已学的除法和取模运算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:14:59