
いつも大変お世話になっております。
また、お知恵を拝借したく思います。
今、小数点二位までの数字を扱って計算しております。
計算結果の表示について、少数点第2桁目をみて、下の3つの決まりごとにわけて表示させたいのですが、
既にある関数などが見つかりません。うまい方法はあるのでしょうか?
例)
10.90
10.91
10.92
これらなら、少数点第2桁目を切り捨て、10.90と表示
10.93
10.94
10.95
10.96
10.97
これらなら、10.95と表示
10.98
10.99
なら少数点第2桁目を切り上げて、11.00と表示
関数、あるいはアイディアがありましたら、
是非お願いいたします。この後で補足で現在の私のプログラムをのせます。(恥を承知の私のプログラムです。)
これを直していただかなくてもよいのです。目的は正確な答えを出すことですので、他に良い方法があればどんな方法でも良いのです。
No.3ベストアンサー
- 回答日時:
こんな感じではいかがでしょうか。
一応動作確認済みです。
<form action="st.php" method="POST">
<input type="text" size="10" name="num">
<input type="submit">
</form>
<?PHP
if ($_POST['num']) {
# 小数点第二桁に整形する
$num = round($_POST['num'], 2);
# 最後の数字を抜き出す
$end_num = substr($num, -1);
if ($end_num == 1) {
$p_num = -0.01;
} elseif ($end_num == 2) {
$p_num = -0.02;
} elseif ($end_num == 3) {
$p_num = 0.02;
} elseif ($end_num == 4) {
$p_num = 0.01;
} elseif ($end_num == 5) {
$p_num = 0;
} elseif ($end_num == 6) {
$p_num = -0.01;
} elseif ($end_num == 7) {
$p_num = -0.02;
} elseif ($end_num == 8) {
$p_num = 0.02;
} elseif ($end_num == 9) {
$p_num = 0.01;
}
# 足し算
$num += $p_num;
echo "<b>元値:</b>{$_POST['num']}<br>\n";
echo "<b>修正値:</b>$num<br>\n";
}
?>
moon_nightさん、動作確認までして下さりありがとうございました。感謝です!
それから私が重複して書いてしまった(既に削除されてしまいました)方に回答を下さったosamuyさんの回答もこちらに紹介させてください。こちらをご覧になる方たちにとても参考になると思いました。
●osamuyさんの回答内容 :
PHPオンラインマニュアルのUser Contributed Notesより:
<?
for ( $x = 10.90; $x <= 11.0; $x += 0.01 ){
printf( "%2.2f %2.2f\n", $x, round( $x * 2, 1 ) / 2 );
}
?>
でした。
これを($A元値,$B結果値)として応用してしたら、
$B = sprintf( "%2.2f %2.2f\n", $A, round( $total_sales_price * 2, 1 ) / 2 );
ずばり答えが出ました!
osamuyさん、私の不注意で折角の回答が消えてしまって、ほんとうにごめんなさい。
私のプログラムにはこのルーチンを使う場所が複数箇所あります。moon_nightさんとosamuyさんの両方使わせて頂きます!
みなさん、ありがとうございました!感謝してます!
No.2
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Excel(エクセル) エクセルのSUM関数について 4 2023/04/18 10:37
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- 教育学 エクセルで小数点以下を四捨五入について教えてください。 2 2023/04/05 17:33
- Excel(エクセル) エクセルのセルの書式設定・ユーザー定義の条件設定について 1 2022/08/17 21:56
- Chrome(クローム) Chromeの描画領域を2分割して異なるスクロール位置を同時に表示させることはできますか 1 2023/03/01 16:53
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) 指定した数字まで累計する方法や文字例の抽出について教えてください 4 2022/10/05 21:19
- Excel(エクセル) 関数で割合を表示する 2 2022/09/27 06:09
- 数学 小数点の計算についてです。 答えは与えられた数字の中で最も少ない桁に四捨五入で合わせるのですが、ひと 2 2023/04/04 15:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイルでpingの結果を...
-
Dosブロンプトでtabを出力したい
-
phpでcookieがうまく保存されない
-
switch()文で値の大小比較
-
shシェルスクリプト 空白行の...
-
pdftkを使った処理をバッチファ...
-
PHP一覧表示した項目にリンクを...
-
findstrのerrorlevel
-
DBのハッシュ化したパスワード...
-
$_SERVER["REQUEST_METHOD"]に...
-
PHP-SQLiteに於いて、複数列の...
-
特別な四捨五入の計算方法について
-
カレンダーの今日の日付をハイ...
-
batファイルでドロップしたデー...
-
RSSにdiv,ul classを付けたいの...
-
checkboxでの複数選択削除がわ...
-
PHP「FALSE」や「0」を使った条...
-
syntax error, unexpected 'ech...
-
PHPの例外処理について教えてく...
-
小数点以下0の非表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
findstrのerrorlevel
-
phpでcookieがうまく保存されない
-
小数点以下0の非表示
-
switch()文で値の大小比較
-
オブジェクトの中身の判定(PHP)
-
バッチファイルで、全てのウィ...
-
ゼロとNULLを区別して number_f...
-
syntax error, unexpected 'ech...
-
Windowsのsetコマンドでの小数...
-
DBのハッシュ化したパスワード...
-
php mysql SELECT文でテーブル...
-
pdftkを使った処理をバッチファ...
-
コマンドプロンプト フォルダ内...
-
bashの関数の引数にスペースが...
-
eとは?
-
$_POST,$_GETの値が空...
-
XMLのタグの有無をPHPで判定し...
おすすめ情報