[Erlang_Question22]如何按规则位数输出数字

需求:把一个数字指定长度输出

例如:

1 00000001
12 00000012
1203 00001203
123456789 123456789
1234567 01234567

方法一:使用io_lib:format来构造:

方法说明见:

%%使用Io:fromat来输出~F.P.PadModC.
%% ~F. ---> ~4. 宽度为F
%% P.  ---> . 无精度要求
%% Pad ---> 0 用Pad填充
%% Mod --->   没有控制序列修饰符指定
%% C   ---> B 控制为10进制输出
%%
format_integer_8_digit(Num) ->
   lists:flatten(io_lib:format("~8..0B", [Num])).

方法二:使用string:right/2来构造

%%使用string:right来构造
format_integer_8_digit2(Num)when is_integer(Num) ->
  string:right(integer_to_list(Num),8,0);
format_integer_8_digit2(NumList) ->
  string:right(NumList,8,0).
方法一 1.如果给的数字大于8位就会输出* ,不符合需求
2.不能指定填充的倍数,只能是写死为8,不灵活
方法二 1.如果给的数字大于8位,会把数字从右边起至第8位截断,不符合需求:123456789--->23456578

所以只能自定义啦:

方法三:自定义

format_integer_8_digit3(Number, Padding) when Number < 0 ->
  [$- | format_integer_8_digit3(-Number, Padding - 1)];
format_integer_8_digit3(Number, Padding) ->
  NumberList = integer_to_list(Number),
  ZeroesNeeded = max(Padding - length(NumberList), 0),
  lists:flatten([lists:duplicate(ZeroesNeeded, $0), NumberList]).


插播小Tip:

查看otp版本信息

erlang:system_info(otp_release).

那些感动人的小细节。

时间: 2024-10-09 10:06:06

[Erlang_Question22]如何按规则位数输出数字的相关文章

LeetCode:Integer to English Words - 按英语读法输出数字对应单词

1.题目名称 Integer to English Words(按英语读法输出数字对应单词) 2.题目地址 https://leetcode.com/problems/integer-to-english-words/ 3.题目内容 英文:Convert a non-negative integer to its english words representation. Given input is guaranteed to be less than 231 - 1. 中文:给出一个非负整数

正规则表达式判断数字

用正则表达式判断.如果你说的纯数字是指整数的话(不包含小数点),可以这样:function check(){var value = document.getElementById("inputId").value;var reg=/^[1-9]\d*$|^0$/; // 注意:故意限制了 0321 这种格式,如不需要,直接reg=/^\d+$/;if(reg.test(value)==true){ alert("都是数字!通过"); return true;}els

算法初级1:输出数字塔

需求: 输入一个1-9的整数n,输出n行由数字组成的数字塔. 1 222 33333 如上图所示. 解决方法: public class 数字塔 { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); cal(n); } private static void cal(int n){ //外层for循环控制输出的层数,内层for循环控制每

课堂测试——数据位数、位数输出、各位数上数据求和

2016.10.18Java课堂测试 在课堂上写的时候,写到各位书身上数据输出时.因为处理不好取最高位的步骤所以不能继续进行编程. 经过后期查找之后: 引用import static java.lang.Math.*; 求x的y次方运算,Math.pow(x,y); 求整数部分,Math.floor();//这里运行之后发现是double类型所以又用了强制转换. 将Int转换为Double类型,int number1=(int) number2; 另外的问题就是: 因为数据上存在多次变化使用,所

java多线程编程(2)交替输出数字和字母

mark一下,不停的看看notify和wait的没有理解 class Printer { int index=0; //输出奇数 public synchronized void printA(int a) { while(index%2==0) { try { this.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } index++; S

Java实现4位数吸血鬼数字算法

定义:吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序,以两个0结尾的数字是不允许的.如1260 = 21 * 60,2187 = 27 * 81等. 本例中实现4位数之内的所有吸血鬼数字. 核心代码: public static void main(String[] args) { //吸血鬼数字计数器 int count = 0; //乘积数字 int m = 0; //字符组,匹配用的 char[] a

让某数字按相应的位数显示,不够位数在数字前加0

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>让某数字按相应的位数显示,不够位数在数字前加0</title></head><body> <script> // 如果是个位数在数字前加0 function gettwo(num){ if(num<10){ return

Python输出数字金字塔

使用Python输出一个数字金字塔 运行结果: 源代码: ''' Python输出数字金字塔 ''' for x in range(1,10): print(' '*(15-x),end='') n=x while n>=1: print(n,sep='',end='') n-=1 n+=2 while n<=x: print(n,sep='',end='') n+=1 print() 原文地址:https://www.cnblogs.com/yijiahao/p/11740372.html

go练习:交叉输出数字和字母

问题:请使用两个线程,一个输出字母,一个输出数字,交替输出1A2B3C....26Z java的实现 我们来练习使用go实现 package main import ( "fmt" ) func main() { var h = 65 var c, d, e = make(chan int), make(chan int), make(chan int) go func() { for i := 0; i < 26; i++ { <-c fmt.Print(i+1, &qu