• 締切済み

文字コードと小数変換

初歩的な質問かもしれませんが2つほどお願いします。 1.jsファイルの文字コード htmlファイルではheadにシフトJIS指定で記述したのですがjsファイルでは何も指定せずに(指定できるのでしょうか?) 保存したらjsファイルの読み込み時に文字化けしてしまいました。 どちらもWindowsのメモ帳で作成保存したのですがjsファイルの文字コードはどうなるのでしょうか? htmlのほうをEUC指定すると文字化けはおきないのですがフォントがずれるのであまり使いたくありません。 2.小数変換 小数第何位を四捨五入と指定できる関数というのはあるのでしょうか? Math.floorやMath.ceilでは整数値になってしまいます。 10^nで割ってから計算し直さないといけないのでしょうか?

みんなの回答

noname#140971
noname#140971
回答No.8

昨晩は酒を飲みながら訳の判らない回答をしていたようです。 まあ、次のような関数を考えていたということです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <html> <title>Round</title> <meta http-equiv="Content-script-Type" content="type"> <script type="text/javascript"> function rounds(m, t) {   return sgn(m)*Math.floor(Math.abs(m)*Math.pow(10,t-1)+0.5)/Math.pow(10,t-1); } function sgn(m) {   return (m < 0) ? -1 : 1; } </script> <body> <script> <!-- document.write (rounds(-1.45, 2), "</br>"); //--> </script> </body> </html>

oxfax
質問者

お礼

この時期はお酒が入るのは仕方ありませんね(笑 いろいろなプログラムを載せていただき勉強になります。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
noname#140971
noname#140971
回答No.7

まあ、それよりも、バグを心配しています。 つまり、正と負の値の問題です。 -1.124 の場合、1.124 にして四捨五入。 その後、負なら-1を掛けないと・・・。 今、自宅で酒飲みながらで試せません。 しかし、通常は、四捨五入関数は作りますよね。 Math.sgn なんてありましたかね・・・。

全文を見る
すると、全ての回答が全文表示されます。
  • wp_
  • ベストアンサー率54% (132/242)
回答No.6

>No.4の方 無粋なツッコミなので気に障ったらスルーしていただきたいのですが、 指数を指定するのであれば function rounds(m, t) {  return Math.round(m*Math.pow(10,t-1))/Math.pow(10,t-1); } とした方が「小数点第何位で四捨五入」というのが分かりやすいかなぁと。 まぁそういう意味では引数がマイナスで小数点以下、正数の場合は上何桁目で四捨五入としたほうが可読性は高まりますけどこの辺は質問者様に努力していただくという方向でどうかよろしく。 ヒントとしてはtを正負逆にすることです。 それでは皆様よい年末を。

oxfax
質問者

お礼

プログラムまでわざわざありがとうございます! 今回は負のエラーなどを気にするプログラムではないので この方法で試してみたいと思います。

全文を見る
すると、全ての回答が全文表示されます。
noname#140971
noname#140971
回答No.5

var v=0; は、ゴミ!

全文を見る
すると、全ての回答が全文表示されます。
noname#140971
noname#140971
回答No.4

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <html> <title>Round</title> <meta http-equiv="Content-script-Type" content="type"> <script type="text/javascript"> var v=0; function rounds(m, t) {   return Math.round(m*Math.pow(10,t))/Math.pow(10,t); } </script> <body> <script> <!--   document.write (rounds(1.154, 2), "</br>"); //--> </script> </body> </html> document.write (rounds(1.154, 0), "</br>");---->1 document.write (rounds(1.154, 1), "</br>");---->1.2 document.write (rounds(1.154, 2), "</br>");---->1.15 ここまではテストしました。

全文を見る
すると、全ての回答が全文表示されます。
  • wp_
  • ベストアンサー率54% (132/242)
回答No.3

日本語おかしかったので自己ツッコミ >四捨五入は組み込まれていません。 小数点以下の四捨五入は(snip) ついでにソースでも。 var nn = 1.2345 nn_tmp = nn * 100; nn = Math.round(nn_tmp) / 100; // nn -> 1.23

全文を見る
すると、全ての回答が全文表示されます。
  • wp_
  • ベストアンサー率54% (132/242)
回答No.2

>htmlのほうをEUC指定すると文字化けはおきないのですがフォントがずれるのであまり使いたくありません。 文字コードとフォントに関係はありません。 フォントが変わるのがイヤなのであればcssなどで明示的に指定すればよいです。 文字化けに関しては原因は別のところにある気がします。 <meta>やjsの読み込み部に間違いがないか確認するとよいかもしれません。 >10^nで割ってから計算し直さないといけないのでしょうか? そのとおり。四捨五入は組み込まれていません。 ロジックは自分で組むほかありません。 たかだか3ロジックくらいなのでそんなに手間ではないですよ。

全文を見る
すると、全ての回答が全文表示されます。
noname#172317
noname#172317
回答No.1

>jsファイルの文字コード win・メモ帳は、文字コードが設定出来ません。 例えば、秀丸などのエディタでは、保存する際に エンコードの種類、改行コードの指定まで出来ます。 秀丸はシェアウェアですが、フリーでもいろいろありますので 検索してみてはいかがでしょうか? >2.小数変換. Math.round ← これだと四捨五入してくれます

参考URL:
http://www.tohoho-web.com/js/math.htm#just
oxfax
質問者

お礼

やはりメモ帳ではムリですか~ Windowsのメモ帳は自動でシフトJISでのみ保存されると聞いたのですが jsファイルでは自動でEUCになってしまうということでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • TeraPadの文字コード

    TeraPadの文字コードについて教えてください。 1. TeraPadで扱える文字コードは Shift-JIS、JIS、EUC、Unicode、UTF-8、UTF-8N の6種類あるようですが、このEUCとEUC-JPは 同じものですか? 2. Shift-JISで保存すると、TeraPadの下の部分に 表示される文字コードがSJISとなります。 これはShift-JISのことですか? 3. 短い文章では文字コードを誤認識する場合も あるようですが、どうしたら正しく認識 させられますか? 指定した文字コードで保存できず困っています。

  • サイトの文字コード

    その昔、インターネットが普及し始めた頃に、ネット上ではEUCの文字コードが一般的なので、JISなどにしていると文字化けするという問題があり、EUCに指定するのが常識だったと記憶しています。 ですが、最近のサイトのソースを覗いてみるとJISのままだったりすることが多いです。 ブラウザが進化したとかで、今では文字コードに気をつける必要はなくなったんでしょうか? たまにどの文字コードを選んでも文字化けするサイトとかあるので、気になっています。

  • javascriptで小数点以下2捨3入の記述方法は?

     javascriptで小数点以下四捨五入(Math.round)切り上(Math.ceil) 切下げ(Math.floor)はありますが、事情があって2捨3入、3捨4入が 必要となりました。どこで調べても見つかりません。どなたか記述方法 を教えてください。 また小数点以下第1位、第2位を特定できる方法もありましたら あわせて教えていただければ幸いです。

  • 文字化けの状態で上書き保存した場合、戻せますか。

    こんにちは。 HTMLファイルを文字化けした状態で 開き(EUC-JPファイルをWindowsのメモ帳で 開きました。Shift-jisで開いています)、 英文字部分を直し、そのまま、 上書き保存してしまいました。 このファイルが、ブラウザで、Shift-jisを 指定しても、Euc-jpを指定しても、 文字化けを起こします。 テキストエディッタでは、常にShift-jisで 開かれてしまい、文字化けです。 これをメモ帳以外のテキストエディッタで Euc-jpで保存しなおすと、さらに 文字化けがひどくなります。 Shift-jisで保存したファイルをEuc-jpで 開けるエディタがあればいいかも 知れませんが、こういうエディタは ありません。(もっともブラウザで、 Euc-jpで文字化けをする以上、エディッタでも 無理かもしれません)。 このように、 Euc-jpをShift-jisで開いてしまい、 そのまま、Shift-jisで保存してしまうと、 もはや、もとに戻せないのでしょうか。 (簡単に直ると思っていたのですが、 ぜんぜん直らず困っています)。 何か分かる人がいましたら、 よろしくお願いします。

  • EUC⇔Shift_JISの文字コード変換について

    DB(OS:win2003、DBMS:MySQL Server5.0  文字コードはEUC)に対して CSVファイルをインポート、エクスポートしようとしています。 入出力ファイル(CSVファイル)の文字コードはShift_JISのため、 文字コード変換が必要となってきています。 CSVファイルのインポート/エクスポート、文字コード変換は、 php5.2.5で構築しています。 今、エクスポート(EUC→Shift_JIS)したCSVファイルを、 エクセルで確認すると極一部が文字化けしてしまいます。 そこで質問が4つあります。 1.文字化けは仕方ないことなのでしょうか? 2.文字化けする文字を特定することはできるのでしょうか? 3.エクスポート方法、変換方法によって文字化けする文字は変わってくるので しょうか? 4.みなさんはこのような文字化けの問題をどのように回避した経験お持ちですか?   (文字化けは已む無し、文字コードを意地でも統一した、    文字を特定して特殊文字に置き換えたなどなど) 基本的なことと思いますが、よろしくご教授願います。  (3.4.はもっと詳細がわからないと何とも言えないかもしれません。   ご回答頂く為には何を調べればいいのかからも教えてください。   よろしくお願いします。)

    • ベストアンサー
    • MySQL
  • PHPの文字コード変換について

    PHPで mb_convert_encodingを用いて UTF-8で記述されたPHPスクリプトファイルの PHPファイル内の任意の文字列の文字コードを変換する場合、 $value = "文字列"; $str = mb_convert_encoding($value ,"UTF8","UTF8"); print $str; この場合、特に問題なく、変換がおこなわれます というか、意味のないで処理ではありますが。 次に $str = mb_convert_encoding($value,"EUC-JP","EUC-JP"); とした場合 うまく文字列の文字コードの変換がおこなわれず 出力内容は文字化けします。 次に $str = mb_convert_encoding($value,"SJIS","SJIS"); とした場合 EUC-JPと同じく文字コード変換に失敗し 文字化けするだろうとおもいましたが おもいのほかブラウザの文字コードUTF-8のままで文字化けしていないのです。 これはどういう現象でしょうか? たとえば一つ目は UTF8で記述されたPHPファイルの文字列をそのままUTF-8として 変換されせるのですから、問題ないはずです。結果問題ありません。 二つ目は UTF-8でかかれたPHPファイルの文字列をEUC-JPでかかれたファイルとして EUC-JPという文字コードに変換しなさいという命令ですよね? これは思う通りにいかなくて文字化けした文字列が出力されるのはわかるのですが 三つ目はUTF8で記述された文字列をSHIFT-JISとしてSHIFT-JISに変換しようとしているにも かかわらず、結果問題なくブラウザのUTF-8で文字列と表示されてしまいます。 これはいったいどういう事なのでしょうか? これが仮に $str = mb_convert_encoding($value,"SJIS","UTF-8"); なら話は簡単んです。 UTF-8で記述されたファイルの任意の文字列を UTF8からSJISに変換しようとしているのですから問題なく SHIFT-JISでエンコーディングされた文字列が帰ってくるはずです。 こ乃原因をご存知のかたよろしくご教授ください。 お願い致します。

    • ベストアンサー
    • PHP
  • Access2002長整数型での小数点処理

    いつも助けられています。 Accessのデータ型についてどなたか教えてください。 長整数型は整数しか指定できないのはわかります。 ただし、10.5と入れると「10」で、「10.6」と入れると「11」になるのがわかりません。 小数点処理は、四捨五入ではないのでしょうか? 何か特別な規則があるのでしょうか? お分かりになる方、よろしくお願いします。

  • mySQLの文字コード

    mySQLで、 --with--charset=ujis や、 --default-character-set=ujis など、 文字コードを指定するものがありますが、 これらは実際どのような事なのでしょうか? dumpファイルからmySQLにデータを流し込むとき、 上記の場合だとdumpファイルの文字コードはEUCに しないといけないのでしょうか? 仮に上記の場合でdumpファイルをSHIFT_JISで流し込んだとき、 そのデータをブラウザで表示する場合の 文字コードもSHIFT_JISにすれば 文字化けせずに表示したのですが。 mySQLのデフォルト文字コード(?)とinsertするデータの 文字コードは一致させなければいけないのでしょうか? よろしくお願いします。

  • 文字コードについて教えてください。

    ホームページを作成するときに指定する文字コードをどうしたらいいのか迷っています。 ウインドウズ環境でホームページを作る際、入力された文字は秀丸などの特別なソフトを使わなければ自動的にShift JISコードになると思うのですが、この場合、タグを <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS"> と指定するべきでしょうか?それとも、 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-2022-jp"> と指定するべきでしょうか? ISO-2022-JPで指定した場合、ブラウザが必ずしも自動判別してくれないこともあるのでしょうか? また、CGIスクリプトはShift JISで入力するとエラーを起こすことがあると聞いたことがあります。 ホームページを作成する場合には、常にISO-2022-JPかEUCの文字コードで作成するようにしたほうがいいのでしょうか? いろいろ検索して調べてみたのですが、どうもよくわかりません。宜しく御願いします。 なお、gooのホームページを閲覧するときも頻繁に文字化けしています(文字コードがEUCに指定されていないのはなぜでしょうか?)。

  • PHPプログラム内でHTML作成時の文字コード

    お世話になります。 PHPコード・及び内部エンコーディングはEUC-JPでプログラムを作成しています。 プログラムでHTMLファイルを作成する処理があるのですが、どうしてもEUC-JPで作成されてしまいます。 中身(<html>~)はmbstringできちんとShift_JISに変換して出力するのですが、ファイル自体の文字コードがEUC-JPで保存されているようで、ブラウザで表示するとエンコードがEUC-JPになって表示され、文字化けしております。 ブラウザのエンコードをShift_JISに直せば文字化けしないで表示されるのですが…。 プログラムから作成したファイルをShift_JISで作成する方法をご教授いただけましたら幸いです。 php.iniの設定をいじる権限はありません。また、プログラムをShift_JISにする以外で方法をお教えいただけないでしょうか。

    • ベストアンサー
    • PHP