2020年10月21日
川俣晶の縁側ソフトウェアC# コーディング How Tototal 1009 count

【入門級】4649は何桁? 数値の桁数を調べる2つの方法

Written By: 川俣 晶連絡先

4649は何桁? §

 数値の桁数を調べる方法は大ざっぱに言えば2つあります。

 一つは文字列を経由する方法。

 もう1つは数値計算だけで解決する方法です。

 文字列を経由する方法はToStringメソッドで文字列に直した上で文字列の長さを取得します。数値の表示が指数などの特殊な表示になっても、確実に表示される文字列の長さを取得できます。しかし、文字列を経由すると効率は良くありません。

 数値計算だけで解決する方法はMath.Log10メソッドで10の対数を取り、それを小数点以下切り上げる方法です。

 表示に関係なく正しい幅を取得できますが、表示のために挿入される記号などを含めた幅は得られません。

 どちらも一長一短です。

 目的に合った方を選びましょう。

罠の数々 §

  • 【数値の桁数≠表示される文字数】ということに注意しよう
  • また表示される文字数は状況次第で変化することがある。たとえば、表示指定で指数表示が指定されるだけで文字数が変化するかもしれない。

参考リンク §

Math.Log10(Double) メソッド

Math.Ceiling メソッド

Math クラス

 Math クラスには、対数を計算するメソッドとして、Log, Log2, Log10の三種類がある。上記リンクからそれぞれの違いを確認して誤用しないようにしよう。

リポジトリ §

https://github.com/autumn009/cshowto

NumberOfDigits §

using System;

class Program

{

    static void Main()

    {

        var tgt = 4649;

        // 方法1・文字列法

        var s1 = tgt.ToString();

        var width1 = s1.Length;

        Console.WriteLine($"{tgt}は{width1}桁です。");

        // 方法2・数値計算法

        var width2raw = Math.Log10(tgt);

        var width2 = Math.Ceiling(width2raw);

        Console.WriteLine($"{tgt}は{width2}桁です。(切り上げ前は{width2raw}です)");

    }

}

実行結果

4649は4桁です。

4649は4桁です。(切り上げ前は3.667359546183087です)

Facebook

COOL C# CREW

C#ハウツー連載の解説増量、カラーのソース、新規書き下ろし追加の読みやすい単行本はこちら。

C#ハウツー: 逆引き入門・こんな機能はどう書くの?
キーワード【 川俣晶の縁側ソフトウェアC# コーディング How To
【C# コーディング How To】の次のコンテンツ
2020年
10月
23日
【入門級】foreachで数値をカウントする方法
3days 0 count
total 1444 count
【C# コーディング How To】の前のコンテンツ
2020年
10月
20日
【入門級】KAMADO TANJIROにAは何回出てくるか? 文字列中に特定の文字が何回出てくるか数えてみよう
3days 0 count
total 1039 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

https://mag.autumn.org/tb.aspx/20201021114023
サイトの表紙【C# コーディング How To】の表紙【C# コーディング How To】のコンテンツ全リスト 【C# コーディング How To】の入手全リスト 【C# コーディング How To】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.