有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (6) 个答案

  1. # 1 楼答案

    主要逻辑你必须首先找出小数点后有多少位
    此代码适用于最多16位的任何数字。如果使用BigDecimal,则最多可以运行18位数字。将输入值(您的数字)放入变量“num”,这里是我硬编码的示例

    double num, temp=0;
    double frac,j=1;
    
    num=1034.235;
    // FOR THE FRACTION PART
    do{
    j=j*10;
    temp= num*j;
    }while((temp%10)!=0);       
    
    j=j/10;
    temp=(int)num;
    frac=(num*j)-(temp*j);
    
    System.out.println("Double number= "+num);      
    System.out.println("Whole part= "+(int)num+" fraction part= "+(int)frac);
    
  2. # 2 楼答案

    由于这个1年前的问题是由纠正问题主题的人提出的,并且这个问题被标记为jsp,并且这里没有人能够给出针对jsp的答案,因此下面是我针对jsp的贡献

    使用JSTL(只需将jstl-1.2.jar放在/WEB-INF/libfmttaglib中即可。有一个^{}标记,它可以完全按照您的需要,并且在maxFractionDigitsmaxIntegerDigits属性的帮助下以非常简单的方式完成

    这里有一个SSCCE,只需复制、粘贴、运行它

    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
    
    <%
        // Just for quick prototyping. Don't do this in real! Use servlet/javabean.
        double d = 3.25;
        request.setAttribute("d", d);
    %>
    
    <!doctype html>
    <html lang="en">
        <head>
            <title>SO question 343584</title>
        </head>
        <body>
            <p>Whole: <fmt:formatNumber value="${d}" maxFractionDigits="0" />
            <p>Fraction: <fmt:formatNumber value="${d}" maxIntegerDigits="0" />
        </body>
    </html>
    

    输出:

    Whole: 3

    Fraction: .25

    就这样。无需借助原始Java代码对其进行处理

  3. # 3 楼答案

    不知道这是否更快,但我正在使用

    float fp = ip % 1.0f;
    
  4. # 4 楼答案

    double value = 3.25;
    double fractionalPart = value % 1;
    double integralPart = value - fractionalPart;
    
  5. # 6 楼答案

    最初的问题要求的是指数和尾数,而不是分数和整数部分

    要从double中获取指数和尾数,可以将其转换为IEEE 754表示形式,并提取如下位:

    long bits = Double.doubleToLongBits(3.25);
    
    boolean isNegative = (bits & 0x8000000000000000L) != 0; 
    long exponent      = (bits & 0x7ff0000000000000L) >> 52;
    long mantissa      =  bits & 0x000fffffffffffffL;