java - 如何在我的程序中将 double 格式化为整数?棋盘米传奇

标签 java exponential

如果我运行我的程序,它会给我双倍的数字,但最终这些数字不再像整数了,因为它们中有一个点。你能告诉我如何格式化它或处理这个问题吗?谢谢

package writingtofile;

import java.io.*;
import java.math.BigInteger;

public class WritingToFile {

    public static void main(String[] args) throws IOException {

        int counter = 1;

        FileWriter out = null;
        try{
        out = new FileWriter("out.txt");
        for(double number : FibanocciNumbers())
        {
            out.write("Spot:");
            out.write(counter + " ");
            out.write(String.valueOf(number) + "\r\n");
            counter++;
        }
        }catch(IOException e)
        {
        System.out.println("Error!");
        }
        finally
        {
        out.close();
        }
    }
    public static double[] FibanocciNumbers()
    {
        double[] fibNumbers = new double[64];
        fibNumbers[0] = 1;
        fibNumbers[1] = 2;
        double lastNumber;
        for(int i = 2; i < 64; i++)
        {
        lastNumber = fibNumbers[i-1];
        fibNumbers[i] = lastNumber * 2;
        }
        return fibNumbers;
<小时/>
Spot:1 1.0
Spot:2 2.0
Spot:3 4.0
Spot:4 8.0
Spot:5 16.0
Spot:6 32.0
Spot:7 64.0
Spot:8 128.0
Spot:9 256.0
Spot:10 512.0
Spot:11 1024.0
Spot:12 2048.0
Spot:13 4096.0
Spot:14 8192.0
Spot:15 16384.0
Spot:16 32768.0
Spot:17 65536.0
Spot:18 131072.0
Spot:19 262144.0
Spot:20 524288.0
Spot:21 1048576.0
Spot:22 2097152.0
Spot:23 4194304.0
Spot:24 8388608.0
Spot:25 1.6777216E7
Spot:26 3.3554432E7
Spot:27 6.7108864E7
Spot:28 1.34217728E8
Spot:29 2.68435456E8
Spot:30 5.36870912E8
Spot:31 1.073741824E9
Spot:32 2.147483648E9
Spot:33 4.294967296E9
Spot:34 8.589934592E9
Spot:35 1.7179869184E10
Spot:36 3.4359738368E10
Spot:37 6.8719476736E10
Spot:38 1.37438953472E11
Spot:39 2.74877906944E11
Spot:40 5.49755813888E11
Spot:41 1.099511627776E12
Spot:42 2.199023255552E12
Spot:43 4.398046511104E12
Spot:44 8.796093022208E12
Spot:45 1.7592186044416E13
Spot:46 3.5184372088832E13
Spot:47 7.0368744177664E13
Spot:48 1.40737488355328E14
Spot:49 2.81474976710656E14
Spot:50 5.62949953421312E14
Spot:51 1.125899906842624E15
Spot:52 2.251799813685248E15
Spot:53 4.503599627370496E15
Spot:54 9.007199254740992E15
Spot:55 1.8014398509481984E16
Spot:56 3.6028797018963968E16
Spot:57 7.2057594037927936E16
Spot:58 1.44115188075855872E17
Spot:59 2.8823037615171174E17
Spot:60 5.7646075230342349E17
Spot:61 1.15292150460684698E18
Spot:62 2.305843009213694E18
Spot:63 4.6116860184273879E18

现货:64 9.223372036854776E18

所以我不喜欢那些带点的数字,因为我认为它改变了你理解这一点的方式。如何赶走或处理它们?坦克

最佳答案

这是您使用 BigInteger 的代码。这就是你想要的,没有小数! 另外,double 不是整数,它类似于 float ,但能够保存大的小数。顺便说一句您已将其命名为 FibanocciNumbers 但那些不是斐波那数

import java.io.*; 
import java.math.BigInteger;

public class Main {

    public static void main(String[] args) throws IOException 
    {

        int counter = 1;

        FileWriter out = null;
        try{
        out = new FileWriter("out.txt");
        for(BigInteger number : FibanocciNumbers())
        {
            out.write("Spot:");
            out.write(counter + " ");
            out.write(String.valueOf(number) + "\r\n");
            System.out.println(number);
            counter++;
        }
        }catch(IOException e)
        {
        System.out.println("Error!");
        }
        finally
        {
        out.close();
        }
    }

    public static BigInteger[] FibanocciNumbers()
    {
        BigInteger[] fibNumbers = new BigInteger[64];
        fibNumbers[0] = new BigInteger("1");
        fibNumbers[1] = new BigInteger("2");
        BigInteger lastNumber;
        for(int i = 2; i < 64; i++)
        {
            lastNumber = fibNumbers[i-1];
            fibNumbers[i] = lastNumber.multiply( new BigInteger("2") );
        }
        return fibNumbers;
    }
}

最后一行输出: 现货:64 9223372036854775808

关于java - 如何在我的程序中将 double 格式化为整数?棋盘米传奇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59253671/

相关文章:

java - JSF:a4j:轮询和性能损失

PHP:如何从具有科学记数法/指数格式的 Excel 数据中获取字符串格式的数据?

matlab - 在 matlab 中求解 x 的 exp(ax)-ax+c=0 最快的方法是什么

python - 如何获得指数拟合的真实均值和se?

Fortran 输出指数到文件

java - 使用扫描仪读取文本文件时出现问题

java - NotificationListenerService.cancelNotification 抛出 NullPointerException

用户登录时 Java 启动程序(平台范围)

java - JSTL c :forEach,递减数循环不可能?

python - Pandas :具有可变权重的指数衰减总和