0001の作り方

皆さんは、「0001」を作る時、どんな風にしているのだろう。‥‥という疑問が昔からあります。私はスクリプトやプログラムは我流なので、「定番」というのをよく知らないのです。

 

「任意の整数に、任意の桁のゼロを追加する時」に、どんな方法があるのか、他人さまのコードを探して見たことがないので、定番というか、定石がわかりません。プログラムが本職の現場に居たこともないですし。

 

どこかで見かけたのは、1を「1」にキャストして文字数を数えて、if分岐で "0", "00"," 000" のいずれかを加える‥‥という方法でしたが、それはあまりにも面倒なように思います。8桁だったら、if分岐で7回書くことになりますし、ifを使わずに繰り返し文で足りない0を加えるのもちょっと面倒です。

 

改めて探したら、"00"や"000"を足す方法を解説しているページも検索できましたが、やっぱりちょっと面倒ですよネ。

 

 

 

私がもう随分前〜20年前くらいから使っているのは、10に欲しい桁数を冪算(累乗)したものを足す方法です。

 

桁のゼロで揃えたい。

10の乗は、10000。

10000に1を足して、10001。

先頭の桁数をカットすれば、0001の出来上がり。

 

‥‥という感じです。

 

JavaScriptですと、

 

var numberOfDigits=4;
var currentValue=1;

var result=String((Math.pow(10,numberOfDigits))+currentValue).slice(1);

alert(result);

 

‥‥で、以下。

 

JPEG_1.jpg

 

桁数の変更は如何様にでも。

 

例えば、8桁なら‥‥

 

var numberOfDigits=8;
var currentValue=1;

var result=String((Math.pow(10,numberOfDigits))+currentValue).slice(1);

alert(result);

 

JPEG_4.jpg

 

‥‥です。

 

 

 

この我流の方法=「10に桁数で累乗する方法」は、桁固定ではなく、もともとは桁の可変を実現するために考えたものでした。

 

例えば、ファイル総数が130ファイルだった場合は4桁ではなく3桁に、10250だった場合は5桁に‥‥と、状況に応じて変動させたい場面に対応するために、うんうん考えた末に冪算で0を生成する方法に至りました。

 

例えば、総数が72だった場合は、

 

var maxValue=72;
var currentValue=8;

var result=String((Math.pow(10,String(maxValue).length))+currentValue).slice(1);

alert(result);

 

JPEG_2.jpg

 

‥‥と、ちゃんと2ケタになりますし、総数が1200だった場合は、

 

var maxValue=1200;
var currentValue=8;

var result=String((Math.pow(10,String(maxValue).length))+currentValue).slice(1);

alert(result);

 

JPEG_3.jpg

 

‥‥と、ちゃんと4ケタになります。

 

なぜ、この「可変桁数」が必要だったかは、もう20年前のことなので忘れちゃったのですが、ともあれ、"0000"と固定せずに可変でゼロで揃えるニーズに対応するために、POWER()、Math.pow()、 「^」(=AppleScriptでの冪算の記号)を用いてヒネりだしました。

 

自作のAppleScriptによる「リネームスクリプト」でも、このルーチンは使っていまして、

 

JPEG_5.jpg

JPEG_6.jpg

 

‥‥と、4ケタと自動設定が選べるようになっています。

 

 

 

ちなみに、エクセルやGoogleスプレッドシートだと、4桁揃えの場合、

 

TEXT(なんらかの数値,"0000")

 

‥‥で済むという、超便利なTEXT()関数があるようですが‥‥、NumbersにはTEXT()がなーい! なじぇ?

 

 

 

macOSのNumbersでは「TEXT()」関数が無いようなので、以下のごとく。

 

 

RIGHT()関数で、数値を「暗黙の型変換」で文字列として扱いつつ右から4文字取り出す‥‥という方法で、難なくクリア。どんなスクリプトやプログラムにも実践方法はありますネ。

 

 

今回の記事を書くにあたって、皆さんの方法を漁ってたら、「とりあえず0をあらかじめいっぱい付けておいて、「substr」(sliceでも)で簡単に切り出す」方法を紹介していて、感じ入りました。

 

var numberOfDigits=4;
String(100000000+1).substr(9-numberOfDigits);

 

実質、最大8ケタもあれば実用に耐え得るので(映像制作の場合)、9桁固定の方法でも充分対応できますネ。

 

 

 



calendar

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< March 2019 >>

selected entries

categories

archives

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM