如何在我的程序中将 double 格式设置为看起来像整数?棋盘米传奇

How to format double to look like an integer in my programme? The chess board rice legend

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

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

Spot: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