浮動小数点を文字列に変換 – プログラミング – Home

浮動小数点を文字列に変換
 
通知
すべてクリア

[解決済] 浮動小数点を文字列に変換

固定ページ 1 / 2

gilgam
 gilgam
(@gilgam)
ゲスト
結合: 22年前
投稿: 2
Topic starter  

浮動小数点の0.12を文字列に変換できる関数を作ろうと思っているのですが
方法が分からず出来ません。

main()
{
double kazu = 0.12;
CString kekka = henkan(kazu);
}

CString henkan(double kazu)
{
CString kekka;

//????(ここの処理が分からない)

return kekka;
}

//????の部分の処理を教えてください。


引用未解決
トピックタグ
tnd
 tnd
(@tnd)
ゲスト
結合: 22年前
投稿: 6
 

_gcvtとかではだめですか?


返信引用
***
 ***
(@***)
ゲスト
結合: 22年前
投稿: 18
 

CString::Format


返信引用
FAY
 FAY
(@FAY)
ゲスト
結合: 23年前
投稿: 14
 

kekka.Format(%f, kazu);


返信引用
FAY
 FAY
(@FAY)
ゲスト
結合: 23年前
投稿: 14
 

あ、だめだわ、これ。ごめんなさい。


返信引用
***
 ***
(@***)
ゲスト
結合: 22年前
投稿: 18
 

sprintf


返信引用
gilgam
 gilgam
(@gilgam)
ゲスト
結合: 22年前
投稿: 2
Topic starter  

どの方法でも出来ました。
有難うございます!


返信引用
FAY
 FAY
(@FAY)
ゲスト
結合: 23年前
投稿: 14
 

こんなかんじかなぁ。

kekka.Format(%lf, kazu);
while(kekka.ReverseFind('0') != -1){
  if(kekka.ReverseFind('0') != kekka.GetLength() - 1) break;
  kekka = kekka.Left(kekka.GetLength() - 1);
}

あたりまえだけど、kazu=0.120
としても0.120という文字には変換できないよん。


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

>あたりまえだけど、kazu=0.120
>としても0.120という文字には変換できないよん。

当たり前でしょうか?
 double kazu=0.120;
 CString kekka;
 kekka.Format( %4.3f, kazu );
で0.120になりますよ。


返信引用
lap
 lap
(@lap)
ゲスト
結合: 22年前
投稿: 11
 

浮動小数点の精度のことを言いたかったのではないでしょうか?


返信引用
FAY
 FAY
(@FAY)
ゲスト
結合: 23年前
投稿: 14
 

> kekka.Format( %4.3f, kazu );
の.3はどうやってもってきたのかな?


返信引用
suzugoya
 suzugoya
(@suzugoya)
ゲスト
結合: 23年前
投稿: 47
 

sprintfではWarningがでるので
 double d=...;
(int)(10*d)%10,(int)(100*d)%10,...
という方法で小数点以下を記述しています
苦肉の策です


返信引用
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 23年前
投稿: 310
 

> kekka.Format(%lf, kazu);
> while(kekka.ReverseFind('0') != -1){
> if(kekka.ReverseFind('0') != kekka.GetLength() - 1) break;
> kekka = kekka.Left(kekka.GetLength() - 1);
> }

// CStringは比較演算子がオーバーロードされているので、これで充分かと。
kekka.Format(%lf, kazu);
while (kekka.Right(1) == 0) {
kekka = kekka.Left(kekka.GetLength() - 1);
}

// または、↓のほうが速いかも
kekka.Format(%lf, kazu);
while (kekka.Right(1) == 0) {
kekka.Delete(kekka.GetLength() - 1, 1);
}

# ケチをつけるつもりはありませんが、CString::GetLength()や
# CString::ReverseFind()を何度も使うとスピードがもったいない
# 気がしてしまうから。


返信引用
NEG(ねぐ)
 NEG(ねぐ)
(@NEG(ねぐ))
ゲスト
結合: 23年前
投稿: 178
 

kekka.Format(%g,kazu);
 では、駄目なんですか?


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

実行速度を気にするんだったら、CString::Right()や
CString::Left()なんて恐ろしくて使えないですが(^^;


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました