
いつも大変お世話になっております。
また、お知恵を拝借したく思います。
今、小数点二位までの数字を扱って計算しております。
計算結果の表示について、少数点第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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイルでpingの結果を...
-
Dosブロンプトでtabを出力したい
-
shシェルスクリプト 空白行の...
-
findstrのerrorlevel
-
switch()文で値の大小比較
-
小数点以下0の非表示
-
syntax error, unexpected 'ech...
-
bashの関数の引数にスペースが...
-
環境変数「%USERPROFILE%」の内...
-
オブジェクトの中身の判定(PHP)
-
変数の受け渡しによる画像の表示
-
PHP ループ <li>~</li>の出力...
-
echoの区切り方(コンマ又はピ...
-
wordの差し込み印刷で文字...
-
【C#】DataGridViewの最大列数...
-
WordでExcelデータを差込...
-
CListCtrlのcheckboxサイズ変更
-
EXCEL、マクロ-改ページ行番号...
-
JavaからPHPへの値の受け渡し
-
PHPの名前空間インポートについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dosブロンプトでtabを出力したい
-
バッチファイルでpingの結果を...
-
shシェルスクリプト 空白行の...
-
switch()文で値の大小比較
-
findstrのerrorlevel
-
ゼロとNULLを区別して number_f...
-
小数点以下0の非表示
-
バッチファイルで、全てのウィ...
-
syntax error, unexpected 'ech...
-
PHPで画像を取得、保存する方法
-
【初歩】 for構文内におけるロ...
-
コマンドプロンプト echo onで...
-
画像の削除
-
ISSETで変数に値が入っていない...
-
phpでcookieがうまく保存されない
-
pdftkを使った処理をバッチファ...
-
phpで「+=」と「=+」の違いは?
-
Windowsのsetコマンドでの小数...
-
4桁の乱数の発生
-
オブジェクトの中身の判定(PHP)
おすすめ情報