質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

解決済

2回答

2144閲覧

C# 整数小数桁指定

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

0クリップ

投稿2019/02/12 05:00

C#でアプリ開発をしています。

double d1 = 1234.1234; double d2 = 123456.123456; Console.WriteLine(d1.ToString("00000.00000")); // 01234.12340 Console.WriteLine(d2.ToString("00000.00000")); // 23456.12345 // 出力したい数値 // d1: 1234.1234 // d2: 23456.12345

現在上のコードのようにしているのですが、⓪埋めになってしまいます。
出力したい数値になるようにはどのように記述すればいいでしょうか。

以上です。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

papinianus

2019/02/12 05:51

>整数5桁以内小数5桁以内にしたいです。 では、102345.123のとき、どうします?02345.123ですか?それとも2345.123ですか?
退会済みユーザー

退会済みユーザー

2019/02/12 06:20

やりたいのは2345.123なんですけど、そういう問題も出てくるんですね。失礼しました。 DataBaseの(NUMBER 10,5)に値をセットする際に桁数が多すぎてエラーが出たのでこの質問をしたのですが、考え方を変えないといけないですね。ありがとうございました!!!
papinianus

2019/02/12 06:24

> DataBaseの(NUMBER 10,5)に値をセットする際に桁数が多すぎてエラーが出た データベースのカラムサイズを拡張するようDBの開発者と相談したほうがいいです。カラムの都合でデータを丸めたら、後で価値のないデータになります。
退会済みユーザー

退会済みユーザー

2019/02/12 06:25

分かりました!!!! すみません、長々とありがとうございました!!!
guest

回答2

0

ベストアンサー

やりたいことが良く分からないのですが、もはや数値じゃなくて文字として扱うのがよくないですかね。

とりあえず、補助関数を書いてみました。この路線でいくなら適当に調整してください

csharp

1 public static string TrimNumber(double d) { 2 var stringify = d.ToString("#0.0#").TrimEnd(new char[]{'0'}); 3 var split = stringify.Split('.'); 4 var over = string.Join("", split[0].Reverse().Take(5).Reverse());//TakeLastが使えるならReverseをやめられる 5 var under = split[1] == string.Empty ? string.Empty : $".{split[1]}"; 6 return $"{over}{under}"; 7 }

初期回答

csharp

1double d1 = 1234.1234; 2double d2 = 123456.123456; 3 4Console.WriteLine(d1.ToString("#0.#####")); // 01234.12340 5Console.WriteLine(d2.ToString("#0.#####")); // 23456.12345

ですかね。ただ、2つ目は23456.12346になりますが

投稿2019/02/12 05:06

編集2019/02/12 06:16
papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/02/12 05:25

papinianusさん、ありがとうございます。 試してみたのですが、 d2: 123456.12346となりました。 また0の値は” ” 空になりました。 なにかいい方法はありませんか??
papinianus

2019/02/12 05:35 編集

0はhihijiji様の回答にもあるとおり、0を入れれば対応できます。回答を修正しました。 もう1点。d2は最初の1をなくしたいということですか?
退会済みユーザー

退会済みユーザー

2019/02/12 05:39

あ、そうなんですね。すみません。お二方ともありがとうございます。 はい!整数5桁以内小数5桁以内にしたいです。
papinianus

2019/02/12 06:17

質疑にもかきましたが、ちょうど5桁目に(整数側も小数側も)0がきたときとか、あと小数側で丸め(四捨五入)の問題とかあると思うんですが、回答としては、「.」の前5文字を抜くってことで改めました。
guest

0

貴方が欲しいのは多分、ToString("#0.#")です。

投稿2019/02/12 05:04

hihijiji

総合スコア4150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/02/12 05:31

hihijijiさん、ありがとうございます。 d1:1234.1になりました。 ただ、0は正しく出力されました。
hihijiji

2019/02/12 06:33

(Math.Floor(d2 * 100000) / 100000).ToString() でしたね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問