⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 num2str.java

📁 JAVA 数学程序库 提供常规的数值计算程序包
💻 JAVA
字号:
package jmathlib.toolbox.string;

import jmathlib.core.tokens.Token;
import jmathlib.core.tokens.OperandToken;
import jmathlib.core.tokens.numbertokens.*;
import jmathlib.core.functions.ExternalFunction;
import jmathlib.core.tokens.CharToken;

/**An external function for changing numbers into strings*/
public class num2str extends ExternalFunction
{
	public OperandToken evaluate(Token[] operands)
	{
        // one operand 
        if (getNArgIn(operands)!=1)
            throwMathLibException("num2str: number of input arguments != 1");

        if ( !(operands[0] instanceof DoubleNumberToken))
            throwMathLibException("num2str: works only on numbers");
        
        double[][]  x = ((DoubleNumberToken)operands[0]).getReValues();
        
        if (x.length == 1 && x[0].length == 1) {
          String data = Double.toString(x[0][0]);
        
          //Cull the decimal point if the number is whole.
          if (data.endsWith(".0"))
            data = data.substring(0, data.length()-2);                   
             
          return new CharToken(data);            
        } else {
            String[][] strData = new String[x.length][x[0].length];
            int[] maxColLength = new int[x[0].length];
            boolean containsFractional = false;
            for (int row=0;row<x.length;row++) {
                for (int col=0;col<x[row].length;col++) {
                    String str = Double.toString(x[row][col]);                    
                    //Cull the decimal point if the number is whole.
                    if (str.endsWith(".0"))
                      str = str.substring(0, str.length()-2);
                    else if (str.indexOf('.') != -1)
                            containsFractional = true;
                    
                    strData[row][col] = str;
                    if (str.length() > maxColLength[col])
                        maxColLength[col] = str.length();
                }
            }
            
            if (x.length == 1 && !containsFractional) {
              StringBuffer b = new StringBuffer();
              for (int col=0;col<x[0].length;col++) {
                  b.append(strData[0][col]);
              }
              return new CharToken(b.toString());
            } else {
              String[] strRows = new String[x.length];  
              for (int row=0;row<x.length;row++) {
                StringBuffer b = new StringBuffer();
                for (int col=0;col<x[row].length;col++) {
                    b.append(strData[row][col]);
                    
                    //TODO use maxColLength to format each row correctly
                    if (col < (x[row].length-1))
                        b.append(' ');
                }
                strRows[row] = b.toString();
              }
              return new CharToken(strRows);
            }
	}
        }
}

/*
@GROUP
char
@SYNTAX
string = num2str(number)
@DOC
Converts a number to a string.
@NOTES
@EXAMPLES
num2str([104, 101]) = ["104" "101"]
@SEE
str2num
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -