
こんにちは。
ある12桁~24桁の数字に+1をした数字を表示しようとしています。
int型とfloat型が16桁以上の数字が扱えないようなので、おかしくなってしまいます・・・
1111111111111111の数字に+1をすると
1.1111111111111E+15となります・・・。
これをどうにかできるようにしたいので、
この数字の最後の2桁で文字を分解し
その2桁に+1をして、
再び
最後の2桁とそれ以前の文字列とを足して
元の桁数にしようと考えました。
しかし、この最後の2桁で文字を分解し、各変数か配列に収める方法がわかりません・・・
何かよい方法もしくは関数などありませんか?
どうか、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
長い数値で構成される文字列に+1するなら、単純に計算すればいいかも。
サンプル
<?php
function str_add1($numStr){
$rev = strrev($numStr);#逆にする
$len = strlen($numStr);#桁数を求める
$carry = 1;
for($i=0;$i<$len;$i++){
$n=ord($rev[$i])-ord("0") + $carry;
if($n>9){
$carry=1;
$n-=10;
} else {
$carry=0;
}
$rev[$i]=chr(ord("0")+$n);
}
if($carry==1){
$rev .= $carry;
}
return strrev($rev);
}
$longNumStr="1234567890123456789012345";
print str_add1($longNumStr);
print "\n";
print str_add1("99999999999999999999");
?>
No.3
- 回答日時:
PEARを使う方法もあります
<?php
include_once 'Math/IntegerOp.php';
$i1 = new Math_Integer('111111111111111111111111');
$i2 = new Math_Integer('1');
$res = Math_IntegerOp::add($i1, $i2);
echo 'i1 + i2 = '.$res->toString()."\n";
?>
ご回答ありがとうございます。
サーバーの環境上PEARを使用することができませんので、
確認をすることが出来ませんでした・・・
問題は#2の方の回答で解決しました。
どうもありがとうございました。
No.1
- 回答日時:
111・・・を10進数で取り扱うにはphpは精度が
足りないようです。
もし2進数であれば、10進数計算で4294967295まで
数値として扱えるようですが、いかがでしょうか?
<?PHP
print decbin(4294967295);
?>
回答ありがとうございます。
2進数での扱いですが、
111・・・の段階で2進数にするのは考えましたが+1の仕方がわからずに断念しました・・・
できれば、このあたりを教えて頂けないでしょうか?
>10進数計算で4294967295
ですが、4294967295だと10桁までしか数値で扱えないとうことでしょうか?
マックスで24桁まで扱いますので、これだと無理だと思うのですが・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA B列にある前から10文字のみ表示 3 2023/08/07 11:24
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Excel(エクセル) Excelの文字列を数字に変換する方法について 6 2023/07/31 21:18
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- PostgreSQL 数値が定期的にあらわれる文字列から、いくつめに出現した数値が指定して切り出したい 1 2023/06/08 13:12
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php文字列中のシングルクオート...
-
PHPのif文でその処理を途中で抜...
-
【file_exists】ファイルが存在...
-
「クラス関数」「メンバ関数」...
-
glob関数で日本語文字が取得で...
-
VB6.0とBASP21を用いてyahooメ...
-
URLの変わらないページをPHPで...
-
FTPClientで転送結果(OKかFAIL)
-
PHPの設定で、 エラーが発生し...
-
VB6にてメールを送信する方法
-
別ファイルの変数を呼び出した...
-
WinXP PHP5 Apache2 初期設定で...
-
DLL のロードの順序
-
LoadLibraryの戻り値(HMODULE)...
-
ボタンのクリック数を合計保存...
-
別サーバのプログラムを起動
-
値の受け渡しが出来ない。
-
サーバ無しでphpを動作させる
-
PHPでファイルをダウンロードさ...
-
phpとpostgreSQLで接続不可?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php文字列中のシングルクオート...
-
getでurl
-
php→JavaScript間の変数受け渡し
-
PHPにおいて、配列データをMySQ...
-
is_callable()の第二引数の使い方
-
PHPでカンマ区切り文字列を数値...
-
PHPのGETとPOSTの処理を学習中...
-
ある文字列の最後の2桁で分解...
-
文字列を大文字の2桁ごとのコン...
-
PHP,Perl の正規表現で”ー"...
-
php 言語について
-
文字列を%+2桁のヘキサ
-
urldecodeについて
-
PHPで4桁の文字コード(SHIFTJI...
-
PHP4から5への移行に伴うFatal ...
-
blob型のデータの変換について
-
【比較演算子】偶数・奇数識別...
-
リダイレクトできません。クエ...
-
秀丸エディタのハイライト(mar...
-
phpでの単語数
おすすめ情報